进程控制常用的一些操作

1、获取进程的id

int main0()
{printf ("当前进程 ID %d\n",  getpid());printf ("当前父进程:%d\n", getppid());printf ("当前用户:  %d\n",  getuid());while (1);return 0;
}

2、fork 和 vfork之前的博客里有,这里就不啰嗦了

// fork
int main1()
{// fork : 创建一个子进程// 如果创建失败,返回-1// 成功返回两个值,如果是在父进程,返回子进程的ID// 如果是在子进程,返回值是0pid_t pid = fork();if (-1 == pid){perror ("fork");return -1;}if (pid > 0)                // 父进程{printf ("我是父进程,pid = %d\n", getpid());}else                        // 子进程{printf ("我是子进程,pid = %d\n", getpid());}while (1);return 0;}// fork1   父进程和子进程是异步的,输出都是1
int main2()
{int count = 0;pid_t pid = fork();count++;printf ("count = %d\n", count);return 0;
}// fork2    会产生8个进程
int main3()
{fork();fork();fork();printf ("a\n");while (1);return 0;
}// fork3    产生20个进程
int main4()
{fork();                         // 产生2个进程fork() && fork() || fork();     // 之前的每个进程都会产生5个进程fork();                         // 翻倍printf ("a\n");while (1);return 0;}// 1、vfork 的子进程必须要显示调用 exit();
// 2、vfork 子进程和父进程共享数据段
// 3、vfork 的子进程先于父进程执行,子进程执行完,CPU才能调度到父进程
int main5()
{int count = 0;pid_t pid = vfork();if (pid < 0){perror ("vfork");return -1;}count++;if (pid > 0)                    // 父进程{printf ("我是父进程,pid = %d  count = %d\n", getpid(), count);}else                            // 子进程{printf ("我是子进程:pid = %d  count = %d\n", getpid(), count);while (1);exit  (0);}return 0;
} 

3、exec函数族

// execl  格式:int execl(const char * path, const char* arg1,...)
int main6()
{// 第一个参数需要一个路径,能够找到需要执行的文件// 后面的参数表明执行的方式,和在终端方式类似,如果程序执行需要// 其他的参数 ls -l,参数要作为函数的实参传过去// 最后需要补一个 NULLint ret = execl ("/bin/ls", "ls", NULL);if (-1 == ret){perror ("exexl");return -1;}   return 0;
}int main7()
{// 产生一个新的程序,替换了原有的程序,原有的进程 id 是不变的// int ret = execl ("bin/ls", "ls", "-l", NULL);int ret = execl ("/bin/ps", "ps", "-ef", NULL);if (-1 == ret){perror ("execl");return -1;}printf ("aaaaaaaaaaaaaaaaaaaaaaaaaaaa\n");return 0;
}// execv    格式:int execv(const char * path, const char *argv[])
int main8()
{char* a[] = {"file.c", NULL};int ret = execv("file", a);if (-1 == ret){perror ("execl");return -1;}return 0;
}// execlp   格式:int execlp(const char * path, const char* arg1,...)
int main9()
{int ret = execlp ("./file", "file", NULL);if (-1 == ret){perror ("execl");return -1;}return 0;
}int main10()
{int ret = execlp ("ls", "ls", "-l", NULL);if (-1 == ret){perror ("execl");return -1;}printf ("aaaaaaaaaaaaaaaaaaaaaaaaaaaa\n");return 0;
}// system
int main11()
{printf ("请选择文件:\n");system ("ls /home");char str[100];while (1){fgets (str, 100, stdin);printf ("[root@promote 15]# ");system (str);}return 0;
}int main12()
{printf ("hello world\n");sleep (1);// 在内部fork()一个子进程,调用 /bin/sh -c string来执行system ("ps -ef | grep a.out");printf ("aaaaaaaaaaaaaaaaaaaaaaaaaaaa\n");return 0;
}

4、进程的终止

// 进程退出
void func()
{printf ("33333333333333333333333\n");exit (0);       // 进程终止
}int main13()
{printf ("hello\n");printf ("1111111111111111");// 在停止进程前,要检查文件的打开情况,并把文件缓冲区中// 的内容写回文件才停止进程exit (0);return 0;
}int main14()
{printf ("hello\n");printf ("11111111111111111");// _exit:直接使进程停止,清除其使用的内存,并清除缓冲区中内容_exit (0);return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/448467.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

vscode 配置 git (配置、暂存、推送、拉取、免密)

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 vscode 中对 git 进行了集成&#xff0c;很多操作只需点击就能操作&#xff0c;无需写一些 git 指令。 不过这就需要你对 vscode 进行配…

男女之间应该保留多少隐私

究竟&#xff0c;男女朋友之间&#xff0c;应该保留多少个人隐私? 我觉得&#xff0c;如果各自的隐私太多,那么&#xff0c;很难会相信彼此的爱能有多深浓。然而&#xff0c;如果两个人没有半点隐私,而且绝对坦诚。 彼此的行为和思想也没有丝毫隐瞒的话,这种清白赤诚有如标…

处理bugs心法

1. 前提 第一层&#xff1a;遇到异常首先必须告诉自己&#xff0c;冷静&#xff0c;不要慌。&#xff08;一看到Bug就心慌&#xff0c;那么武功就施展不了了&#xff09; 2. 入门级 第二层&#xff1a;遇到Bug&#xff0c;第一潜意识看输出异常的信息的&#xff08;控制台输出&…

C语言实现简单的电子通讯录2

这两天学完系统调用和标准IO&#xff0c;之前的通讯录可以进行一些改进&#xff0c;将数据保存到文件中(图我这里就不发了)。 原理&#xff1a;每次启动程序时先从预设文件中以只读的形式读取保存的通讯录信息&#xff0c;然后将读取到的信息导入到结构体中&#xff1b;每次执…

解决 VS Code 保存时候自动格式化

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 不知道从哪个版本起&#xff0c;VS code 保存会自动格式化。 以前都是altshiftF格式化的&#xff0c;现在一保存就格式化&#xff0c;而…

发布在线文档【软件=业务+架构+流程+组织.pptx】

10年的技术工作&#xff0c;软件这个词对我来说一点都不陌生&#xff0c;但是当我问自己如何理解软件的&#xff1f;我却不知道如何回答。软件&#xff1d;业务&#xff0b;架构&#xff0b;流程&#xff0b;组织&#xff0c;其中公式是借用软件产品线工程BAPO的概念&#xff0…

12种食物最养男人 10种食物最养女人 太值得收藏了

据统计&#xff0c;男性10大死因中有4项与饮食有关&#xff0c;包括癌症、脑血管疾病、心脏病和糖尿病。以下12种食品对男性健康有益&#xff0c;建议男性多多摄取。 男人需要的十种养生食物 No.1西红柿 西红柿的酸味能促进胃液分泌&#xff0c;帮助消化蛋白质等&#xff…

ES 基础

1. ES 基础一网打尽 1.1 ES定义 ESelaticsearch简写&#xff0c; Elasticsearch是一个开源的高扩展的分布式全文检索引擎&#xff0c;它可以近乎实时的存储、检索数据&#xff1b;本身扩展性很好&#xff0c;可以扩展到上百台服务器&#xff0c;处理PB级别的数据。 Elasticsear…

为什么 那么多 前端开发者都想学 Vue.js

根据JavaScript 2017 前端库状况调查 Vue.js是开发者最想学的前端库。我在这里说明一下我为什么认为这也是和你一起通过使用 Vue 构建一个简单的 App 应用程序的原因。 我最近曾与 Evan You&#xff0c;Chris Fritz&#xff0c;Sarah Drasner&#xff0c;和 Adam Jahr 做了一个…

进程间通信之管道通信

两个程序之间传递数据的一种简单方法是使用popen和pclose。 #include <stdio.h> FILE *popen(const char *command, const char *type); int pclose(FILE *stream); popen函数允许一个程序将另一个程序作为新进程来启动&#xff0c;并可以传递数据给它或者通过它接收数据…

vue 各组件 使用 Demo

环境搭建 前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 假设你已经通读vue官方文档&#xff08;文档都没读一遍&#xff08;至少&#xff09;&#xff0c;那不建议动手撸码&#xff…

Dropbox推独立应用,公司估值已达100亿美元

摘要&#xff1a;Dropbox刚获得5亿美元的新一轮融资&#xff0c;其估值已高达100亿美元&#xff0c;现在又推出针对云服务的独立应用Carousel&#xff0c;不久之后&#xff0c;还会有应用陆续推出&#xff0c;随着美国前国务卿赖斯的加盟&#xff0c;Dropbox在云市场的表现异常…

SQL经典面试题(二)

有3个表S&#xff0c;C&#xff0c;SCS&#xff08;SNO&#xff0c;SNAME&#xff09;代表&#xff08;学号&#xff0c;姓名&#xff09; //主键&#xff1a;SNO //多个人&#xff0c;多门课 3张表 &#xff0c;SC 关系表C&#xff08;CNO&#xff0c;CNAME&#xff0c;…

进程间通信之信号he信号量

信号的篇幅较少&#xff0c;就把他和信号量放在一起了。先讲讲他们之间的区别&#xff1a; 1.信号&#xff1a;&#xff08;signal&#xff09;是一种处理异步事件的方式。信号时比较复杂的通信方式&#xff0c;用于通知接受进程有某种事件发生&#xff0c;除了用于进程外&…

开源当自强:我们不是“便宜货”

之前人们争相使用开源软件&#xff0c;无非是因为它便宜、好用、易得&#xff0c;不过根据最新的开源软件调查显示&#xff0c;人们使用开源软件最主要的原因还是看重它的高质量。 成本低是很过公司参与开源项目的最主要原因之一&#xff0c;而现在他们视开源是一条通往创新、省…

前端学习:Vue.js基本使用

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 Vue教程文档&#xff1a; https://cn.vuejs.org/v2/guide/ 定义 实例&#xff1a; new Vue() 挂载点: el 数据&#xff1a;data 模…

PWE

Obstacle Override Logic The obstacle override logic provides the possibility to override obstacle within a window movement by selective switching off the anti-trap functionality.转载于:https://www.cnblogs.com/dannykong/p/11151813.html

进程间通信之消息队列

一、什么是消息队列 unix早期通信机制之一的信号能够传送的信息量有限&#xff0c;管道则只能传送无格式的字节流&#xff0c;这无疑会给应用程序开发带来不便。消息队列&#xff08;也叫做报文队列&#xff09;则克服了这些缺点。 消息队列就是一个消息的链表。可以把消息看…

“ 愿我如星君如月,夜夜流光相皎洁 ...”

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 永远相信爱情 ... 从一而终 ... --------------------------------------------------------------------------- 后记&#xff1a;2…

python内建函数和工厂函数的整理

内建函数参阅&#xff1a; https://www.cnblogs.com/pyyu/p/6702896.html 工厂函数&#xff1a; 本篇博文比较粗糙&#xff0c;后续会深入整理转载于:https://www.cnblogs.com/qiang-upc/p/11155786.html