Linux进程的控制
文章平均质量分 77
Sparking-Water
这个作者很懒,什么都没留下…
展开
-
linux系统编程-标题深入理解 fork-execl、system 和 popen:使用方法、参数说明和区别
函数,而是继续自己的执行流程,那么父进程和子进程将并发执行,互不等待。这可能会导致一些问题,例如父进程结束了但子进程仍在执行,造成子进程成为孤儿进程(即没有父进程管理),或者子进程结束后无法获取其退出状态。在 Linux/Unix 环境下,有几种常用的方法可以创建子进程并执行外部命令,其中包括 fork-execl、system 和 popen。这样可以确保父进程在子进程完成后再继续执行,并且可以获取到子进程的退出状态,以进行必要的处理。父进程通过管道发送数据给子进程,并通过管道接收来自子进程的输出。原创 2024-07-17 10:23:52 · 691 阅读 · 0 评论 -
Linux系统编程-进程-exec族函数
file:如果参数file中包含/,则就将其视为路径名,否则就按 PATH环境变量,在它所指定的各目录中搜寻可执行文件。exec函数族的函数执行成功后不会返回,调用失败时,会设置errno并返回-1,然后从原程序的调用点接着往下执行。是一个全局变量,它是一个指向字符串指针的指针数组。数组中的内容,但可以通过其他方式来操作环境变量,比如使用标准库中的函数来获取、设置或删除环境变量。v:应先构造一个指向各参数的指针数组,然后将该数组的地址作为这些函数的参数。函数成功执行,它将不会返回,后续的代码也不会被执行。原创 2024-07-17 10:23:13 · 759 阅读 · 0 评论 -
Linux系统编程-进程-wait && waitpid
wait()函数的参数是一个指向int类型的整数指针,用于存储子进程的退出状态信息。它返回子进程的进程ID(PID),如果出错则返回-1。wait()函数的行为如下:如果当前没有子进程或所有子进程都已经结束,则wait()函数将阻塞父进程,直到有一个子进程结束。当有子进程结束时,wait()函数会返回结束的子进程的PID,并将子进程的退出状态存储在传入的status指针所指向的位置。通过解析status,可以获取子进程的退出状态和其他信息。原创 2024-07-17 10:22:33 · 552 阅读 · 0 评论 -
linux系统编程-进程-进程退出
不同,它们不会调用已注册的退出处理程序和标准I/O库的清理操作。因此,在使用这两个函数时,需要确保已经处理好可能的资源释放和关闭操作。函数将进程终止,并返回一个指定的退出状态码给操作系统。通常,非零的退出状态码表示进程异常终止,而0表示进程正常终止。这两个函数通常用于在发生严重错误或异常情况下立即退出进程,而不需要执行任何后续的清理工作。函数结束时,进程会自动退出,并将返回值作为退出状态码传递给操作系统。函数在每个进程中都是独立的,子进程的退出处理函数不会传递到父进程。是C语言中用于立即终止进程的函数。原创 2024-07-16 15:28:11 · 383 阅读 · 0 评论 -
linux系统编程-进程2-vfork && exit
返回值是子进程的 PID(进程标识符),可以通过这个 PID 来区分父进程和子进程,并对它们进行不同的操作。但需要注意的是,在子进程执行期间,应该避免对共享数据进行修改,以免破坏父进程的状态。在创建子进程时并不会复制父进程的地址空间,而是直接与父进程共享地址空间。,用于指定程序或进程的退出状态。子进程与父进程共享地址空间,所以在子进程执行期间,父进程会被阻塞。函数通过创建一个新的子进程来实现,新的子进程几乎和父进程共享地址空间。在创建子进程时并不会复制父进程的地址空间,而是直接与父进程共享地址空间。原创 2024-07-16 15:23:18 · 737 阅读 · 0 评论 -
Linux系统编程-进程1-fork
但是,在创建子进程后,子进程和父进程会独立执行,它们可以独立地修改各自的地址空间中的内容。函数创建子进程时,操作系统会为子进程分配一个与父进程相同的地址空间,并且将父进程的整个地址空间复制到子进程中。该函数在成功创建子进程时,在父进程中返回子进程的进程ID,在子进程中返回0。函数后,操作系统会创建一个新的子进程。而子进程的执行与父进程是并发的,具体谁先执行并没有确定的规则。请注意,子进程获得的是父进程的副本,而不是引用。函数后,父进程和子进程都会继续执行接下来的代码,但是它们各自有不同的进程ID。原创 2024-07-16 15:18:11 · 157 阅读 · 0 评论