加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

Linux 创建子进程执行任务

发布时间:2020-12-15 07:18:53 所属栏目:安全 来源:网络整理
导读:# include ); #include span style="color: #0000ff"int main(span style="color: #0000ff"void span style="color: #000000") { pid_t pid; span style="color: #0000ff"char *span style="color: #000000"message; span style="color: #0000ff"int span st

# include );

#include

<span style="color: #0000ff">int main(<span style="color: #0000ff">void<span style="color: #000000">)
{
pid_t pid;
<span style="color: #0000ff">char *<span style="color: #000000">message;
<span style="color: #0000ff">int<span style="color: #000000"> n;
pid =<span style="color: #000000"> fork();
<span style="color: #0000ff">if(pid < <span style="color: #800080">0<span style="color: #000000">)
{
perror(<span style="color: #800000">"<span style="color: #800000">fork failed<span style="color: #800000">"<span style="color: #000000">);
exit(<span style="color: #800080">1<span style="color: #000000">);
}
<span style="color: #0000ff">if(pid == <span style="color: #800080">0<span style="color: #000000">)
{
printf(<span style="color: #800000">"<span style="color: #800000">This is the child process. My PID is: %d. My PPID is: %d.n<span style="color: #800000">"<span style="color: #000000">,getpid(),getppid());
}
<span style="color: #0000ff">else<span style="color: #000000">
{
printf(<span style="color: #800000">"<span style="color: #800000">This is the parent process. My PID is %d.n<span style="color: #800000">"<span style="color: #000000">,getpid());
}
<span style="color: #0000ff">return <span style="color: #800080">0<span style="color: #000000">;
}

$ forkdemo.c -o forkdemo

$ ./forkdemo

fork 函数的特点是 "调用一次,返回两次":在父进程中调用一次,在父进程和子进程中各返回一次。在父进程中返回时的返回值为子进程的 PID,而在子进程中返回时的返回值为 0,并且返回后都将执行 fork 函数调用之后的语句。如果 fork 函数调用失败,则返回值为 -1。

#include execl( *path, * execlp( *file,...); execle( *path, *arg,..., * execv( *path, * execvp( *file, * execve( *path, * argv[], * envp[]);

调用 exec 族函数会把新的程序装载到当前进程中。在调用过 exec 族函数后,进程中执行的代码就与之前完全不同了,所以 exec 函数调用之后的代码是不会被执行的。

#include main(((pid=vfork()) < (pid== *argv[ ]={,, *envp[ ]={(execve(,argv,envp) < printf(

$ subprocessdemo.c -o subprocessdemo

$ ./subprocessdemo

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!