當前位置: 首頁>>代碼示例>>Golang>>正文


Golang Process.Signal方法代碼示例

本文整理匯總了Golang中github.com/cloudfoundry-incubator/garden.Process.Signal方法的典型用法代碼示例。如果您正苦於以下問題:Golang Process.Signal方法的具體用法?Golang Process.Signal怎麽用?Golang Process.Signal使用的例子?那麽, 這裏精選的方法代碼示例或許可以為您提供幫助。您也可以進一步了解該方法所在github.com/cloudfoundry-incubator/garden.Process的用法示例。


在下文中一共展示了Process.Signal方法的4個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的Golang代碼示例。

示例1: streamInput

func (s *GardenServer) streamInput(decoder *json.Decoder, in *io.PipeWriter, process garden.Process, connCloseCh chan struct{}) {
	for {
		var payload transport.ProcessPayload
		err := decoder.Decode(&payload)
		if err != nil {
			close(connCloseCh)
			in.CloseWithError(errors.New("Connection closed"))
			return
		}

		switch {
		case payload.TTY != nil:
			process.SetTTY(*payload.TTY)

		case payload.Source != nil:
			if payload.Data == nil {
				in.Close()
				return
			} else {
				_, err := in.Write([]byte(*payload.Data))
				if err != nil {
					return
				}
			}

		case payload.Signal != nil:
			s.logger.Info("stream-input-process-signal", lager.Data{"payload": payload})

			switch *payload.Signal {
			case garden.SignalKill:
				err = process.Signal(garden.SignalKill)
				if err != nil {
					s.logger.Error("stream-input-process-signal-kill-failed", err, lager.Data{"payload": payload})
				}
			case garden.SignalTerminate:
				err = process.Signal(garden.SignalTerminate)
				if err != nil {
					s.logger.Error("stream-input-process-signal-terminate-failed", err, lager.Data{"payload": payload})
				}
			default:
				s.logger.Error("stream-input-unknown-process-payload-signal", nil, lager.Data{"payload": payload})
				in.Close()
				return
			}

		default:
			s.logger.Error("stream-input-unknown-process-payload", nil, lager.Data{"payload": payload})
			in.Close()
			return
		}
	}
}
開發者ID:nagyistoce,項目名稱:garden,代碼行數:52,代碼來源:request_handling.go

示例2:

						Stderr: GinkgoWriter,
					}, nil, signaller)
				Expect(err).NotTo(HaveOccurred())

				Eventually(stdout).Should(gbytes.Say("pid"))
			})

			AfterEach(func() {
				if cmd.ProcessState != nil && !cmd.ProcessState.Exited() {
					cmd.Process.Signal(os.Kill)
				}
			})

			Context("when the signaller is an LinkSignaller", func() {
				It("sends a kill message on the extra file descriptor", func(done Done) {
					Expect(process.Signal(garden.SignalKill)).To(Succeed())
					Eventually(stdout).Should(gbytes.Say("Received: killed"))
					close(done)
				}, 2.0)

				It("kills the process with a terminate signal", func(done Done) {
					Expect(process.Signal(garden.SignalTerminate)).To(Succeed())
					Eventually(stdout).Should(gbytes.Say("Received: terminated"))
					close(done)
				}, 2.0)

				Context("when an unsupported signal is sent", func() {
					AfterEach(func() {
						Expect(process.Signal(garden.SignalKill)).To(Succeed())
					})
開發者ID:guanglinlv,項目名稱:garden-linux,代碼行數:30,代碼來源:process_tracker_test.go

示例3:

						Stdout: io.MultiWriter(stdout, GinkgoWriter),
						Stderr: GinkgoWriter,
					}, nil)
				Expect(err).NotTo(HaveOccurred())

				Eventually(stdout).Should(gbytes.Say("trapping"))
			})

			AfterEach(func() {
				if cmd.ProcessState != nil && !cmd.ProcessState.Exited() {
					cmd.Process.Signal(os.Kill)
				}
			})

			It("kill the process", func(done Done) {
				Expect(process.Signal(garden.SignalKill)).To(Succeed())

				Expect(cmd.Wait()).NotTo(Succeed())

				close(done)
			}, 2.0)

			It("kills the process with a terminate signal", func(done Done) {
				Expect(process.Signal(garden.SignalTerminate)).To(Succeed())

				Eventually(stdout).Should(gbytes.Say("terminated"))
				Expect(cmd.Wait()).NotTo(Succeed())

				close(done)
			}, 2.0)
		})
開發者ID:digideskio,項目名稱:guardian,代碼行數:31,代碼來源:process_tracker_test.go

示例4:

					})
				})

				Describe("Signal", func() {
					BeforeEach(func() {
						errs := make(chan error, 1)
						errs <- io.EOF
						close(errs)

						fakeProcess.SignalStub = func(garden.Signal) error {
							return <-errs
						}
					})

					It("reattaches on use of closed connection", func() {
						Ω(process.Signal(garden.SignalTerminate)).Should(Succeed())
						Ω(fakeProcess.SignalArgsForCall(0)).Should(Equal(garden.SignalTerminate))

						Ω(innerConnection.AttachCallCount()).Should(Equal(2))
						handle, processID, calledProcessIO := innerConnection.AttachArgsForCall(1)
						Ω(handle).Should(Equal("la-contineur"))
						Ω(processID).Should(Equal(uint32(6)))
						Ω(calledProcessIO).Should(Equal(processIO))
					})
				})

				Describe("SetTTY", func() {
					BeforeEach(func() {
						errs := make(chan error, 1)
						errs <- io.EOF
						close(errs)
開發者ID:utako,項目名稱:atc,代碼行數:31,代碼來源:retryable_garden_connection_test.go


注:本文中的github.com/cloudfoundry-incubator/garden.Process.Signal方法示例由純淨天空整理自Github/MSDocs等開源代碼及文檔管理平台,相關代碼片段篩選自各路編程大神貢獻的開源項目,源碼版權歸原作者所有,傳播和使用請參考對應項目的License;未經允許,請勿轉載。