Articles of 进程

perl fork()exec(),subprocess狂放

我正在使用Linux和.sh是在tcsh 。 我做了一个非常基本的fork和exec ,但是我需要帮助来实现安全。 基本上我的Perl脚本在subprocess中调用.sh脚本。 但是当我Ctrl+c杀死父母时,信号被孩子忽略。 1)如何捕获subprocess的SIGINT ? 2)运行.sh脚本的subprocess仍然是标准输出到xterm的屏幕。 我怎样才能删除这个? 我正在考虑在后台运行脚本 exec("shell.sh args &"); 但还没有testing,因为我需要弄清楚如何防止孩子先疯狂。 3)父进程(perl脚本)不等待subprocess(.sh脚本)。 所以我读了很多关于孩子成为僵尸 ? 脚本完成后会发生吗? 我将如何阻止它? $pid = fork(); if($pid < 0){ print "Failed to fork process… Exiting"; exit(-1); } elsif ($pid ==0) { #child process exec("shell.sh args"); exit(1); } else { #execute rest of parent}

什么是可能导致fork()或system()调用在Linux上失败的一些条件?

怎么能找出它们是否发生,并导致由fork()或system()返回的错误? 换句话说,如果fork()或system()返回一个错误,我可以检查一下Linux中有哪些东西来诊断为什么会发生这个特定的错误? 例如: 只是内存不足(导致errno ENOMEM) – 检查内存使用“免费”等 内核没有足够的内存来复制父进程的页表和其他会计信息(导致errno EAGAIN) 是否有全球stream程限制? (导致errno EAGAIN呢?) 是否有每个用户的进程限制? 我怎么知道它是什么? …?

current-> pid如何为linux工作?

我需要包含一个库吗? 任何人都可以请详细说明吗? 我知道是用来获取当前任务被调用的进程ID 但是我想用current-> pid打印一些东西 printk("My current process id/pid is %d\n", current->pid); …并给我一个错误 error: dereferencing pointer to incomplete type

主进程从systemd启动时不能分离subprocess

我想生成长时间运行的subprocess,在主进程重启/死亡时生存下来。 从terminal运行时,这工作正常: $ cat exectest.go package main import ( "log" "os" "os/exec" "syscall" "time" ) func main() { if len(os.Args) == 2 && os.Args[1] == "child" { for { time.Sleep(time.Second) } } else { cmd := exec.Command(os.Args[0], "child") cmd.SysProcAttr = &syscall.SysProcAttr{Setsid: true} log.Printf("child exited: %v", cmd.Run()) } } $ go build $ ./exectest ^Z [1]+ […]

可以退出()无法终止进程?

我的程序中有一个注册的信号处理程序。 在收到不需要的信号(SIGABRT)时,我在信号处理程序中调用'exit(-1)'来退出这个过程。 但是正如在几个会话中所注意到的那样,它调用exit(),但是没有终止进程。 这个问题是随机产生的,我强烈怀疑执行exit()。 出现任何可能导致exit()无法终止进程的原因或情况。 谢谢。

在* nix中,是什么导致顶部命令“睡眠”?

是什么导致了我在top看到的这些sleeping过程? 如果我要调用PHP的sleep()函数,是否会增加我在top看到的sleeping计数? sleeping有没有什么缺点?

在Linux中更改进程名称

我在Linux上,我分叉/从我的C衍生应用程序中释放一个新的进程。 是否有可能改变这些新的subprocess的命名? 我希望能够识别正在启动的进程,以防出现问题,我需要手动杀死它。 目前他们都有相同的名字。

杀死一个Java进程(在Linux中)的进程名称,而不是PID

在configuration/安装Hadoop集群时,我们通常需要杀死一个Java进程/守护进程。 我们看到用jps命令运行的Java进程/守护进程。 通常我们用PID来杀死一个Java进程。 例如 kill -9 112224 inputPID是有点困难的。 有没有办法通过名称来杀死进程? 在一个单一的命令?

如何通过在C中的PID来监视事件的外部进程?

有什么图书馆有一些function允许一个监视外部进程的事件通过其pid_t ? 我的意思是,监视一个外部进程是否已经退出,或者是否已经创build了一个或多个subprocess(带有fork ),还是已经成为另一个可执行映像(通过exec或posix_spawn函数系列调用),还是一个Unix信号是交付给它。 编辑 我需要一些不会干扰被监控程序执行的东西。 所以,我不应该使用ptrace ,因为它会在发出某种信号时停止正在监视的进程,并且每当发生这种情况时都需要恢复进程。

在linux上启动一个进程的时间

如何在使用c语言的ubuntu linux机器上find进程启动时间。 在Linux中有/ proc / [pid] / stat文件给出信息 starttime %lu /*The time in jiffies the process started after system boot*/ 和文件/ proc / stat给出 btime %lu /*measurement of system boot time since Epoch in seconds*/ 为了添加这两个值,我怎样才能把以前的值转换成秒,因为它是在jiffies单元。