当前位置: 首页 > news >正文

如何做垃圾网站赚钱/全网整合营销平台

如何做垃圾网站赚钱,全网整合营销平台,长沙网站设计,名人朋友圈网页版qq登录入口在阅读《深入理解计算机操作系统》书的第八章看到这个简单的外壳程序的main,偶尔联想到自己工作中的调试程序,应该和这个实现方式是一样的,可能公司的会用到进程间的通信,但是原型基本都是这样的。具体看代码吗?代码有…

    在阅读《深入理解计算机操作系统》书的第八章看到这个简单的外壳程序的main,偶尔联想到自己工作中的调试程序,应该和这个实现方式是一样的,可能公司的会用到进程间的通信,但是原型基本都是这样的。具体看代码吗?代码有部分修改,同时我个人也有很多疑问大家求解?先贴代码吧!

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sys/types.h>
#include <unistd.h>#define MAXARGS 128pid_t FORK()
{pid_t pid;if((pid = fork()) < 0){printf("fork error!\n");}return pid;
}/*解析命令行*/
int parseline(char *buf,char **argv)
{char *delim;int argc;int bg;/*将换行符转换成空格方便解析*/buf[strlen(buf) - 1] = ' ';/*忽略空格*/while(*buf && *buf == ' '){buf++;}argc = 0;while((delim = strchr(buf,' '))){argv[argc++] = buf;*delim = '\0';buf = delim + 1;while(*buf && *buf == ' '){buf++;}}argv[argc] = NULL;/*没有输入执行命令,返回1*/if(argc == 0){return 1;}/*是否后台运行*1:后台运行,0: 不是* */if(*argv[argc - 1] == '&'){bg = 1;argv[--argc] = NULL;}else{bg = 0;}return bg;}/*判断是退出程序还是忽略执行命令*/
int builtin_command(char **argv)
{if(!strcmp(argv[0],"quit")){exit(0);}if(!strcmp(argv[0],"&")){//忽略 命令return 1;}return 0;}
/*执行命令行* */
void eval(char *cmdline)
{char *argv[MAXARGS];char buf[MAXARGS];int bg;pid_t pid;char * envp[ ]={"PATH=/bin",0};strncpy(buf,cmdline,MAXARGS);bg = parseline(buf,argv);if(argv[0] == NULL){//忽略空行return;}if(!builtin_command(argv)){if((pid = FORK()) == 0){//子进程运行代码if(execve(argv[0],argv,envp) < 0){printf("%s:command not found.\n",argv[0]);exit(0);}else{printf("1111111111111\n");exit(2);}}/*这个是个疑问???* 当父进程是后台运行时,子进程退出是不是有系统回收??*/if(pid > 0 && !bg){int status;if(waitpid(pid,&status,0) < 0){printf("waitfg:waited,errr\n");}else{printf("%d,exit!\n",pid);}}else{printf("%d %s",pid,cmdline);}}return;}int main()
{char cmdline[MAXARGS];while(1){printf("[jsh_dbug] > ");//从终端输入fgets(cmdline,MAXARGS,stdin);if(feof(stdin)){exit(0);}//执行程序eval(cmdline);}
}


目前不理解的问题:

1、当程序运行的后台时,创建的子进程退出时的是有操作系统回收的吗?在代码中看到这样的处理机制,当运行程序后,在终端输入命令后,结尾加 & 符号,不同的处理。

[jsh@localhost 8]$ ./a.out 
[jsh_dbug] > /bin/pwd
/home/jsh/mystudy/com/8
9285,exit!
[jsh_dbug] > 
[jsh_dbug] > /bin/pwd &
9289 /bin/pwd &
[jsh_dbug] > /home/jsh/mystudy/com/8[jsh_dbug] > quit
[jsh@localhost 8]$ 

2、这个疑问可能和这个代码没有什么关系,是关于fork函数的疑问,看下面代码吧


#include <stdio.h>
#include <unistd.h>
#include <sys/types.h>
#include <stdlib.h>pid_t FORK()
{pid_t pid;if((pid = fork()) < 0){printf("fork error!\n");}return pid;}
#if 0
int main()
{printf("d");if(FORK() == 0){//   sleep(1);//     printf("a");exit(0);} // printf("b");// waitpid(-1,NULL,0);printf("c");exit(0);}
#endif#if 
int main()
{int status;pid_t pid;printf("Hello!\n");pid = FORK();if(pid == 0){printf("%d\n",!pid);}if(pid != 0){if(waitpid(-1,&status,0) >  0){if(WIFEXITED(status) != 0)printf("%d\n",WEXITSTATUS(status));}}printf("BYE\n");exit(2);
}
#endif

上面代码中有2个mian函数,先执行下面的打印如下:

[jsh@localhost 8]$ ./a.out 
Hello!
1
BYE
2
BYE

当执行上面的代码时

[jsh@localhost 8]$ ./a.out 
dc[jsh@localhost 8]$ d

问题是 在fork 之前分别打印了 d 和hello    第一个hello打印一个,第二d打印2个,为什么?


http://www.jmfq.cn/news/5246209.html

相关文章:

  • 柳州网站建设公司/网站关键词优化教程
  • 网站建设制作设计优化兰州/seo推广是什么
  • 湘潭做网站优化/tool站长工具
  • 北京集团 网站建设/有域名有服务器怎么做网站
  • 可视化拖拽建站系统/怎么设置自己的网站
  • 大众团购网站怎么做/网站公司
  • 做企业网站设计价格是多少钱/建站推广
  • 做网站先买域名/百度投放广告平台
  • 迁安社会信用体系建设官方网站/做竞价推广大概多少钱
  • 手机网站信任从哪里设置/网络营销概念
  • 百度网站建设中心/测试自己适不适合做销售
  • 网站留言程序怎么做/怎么免费推广自己网站
  • 黑色炫酷灯饰照明科技企业商务网站模板/seo查询官网
  • 政府网站与门户网站的区别/seo的优化技巧和方法
  • 可以做微商的网站/网络促销方案
  • 做网站用什么web服务器吗/seo推广营销公司
  • 建设课程网站的目的/张家界百度seo
  • 阿里巴巴电子商务网站建设目的/b站视频推广app
  • 怎么选择网站开发/优化网站建设seo
  • 一般做网站用什么软件/推广普通话的重要意义
  • 教育网站模板/网上兼职外宣推广怎么做
  • 网站颜色正确搭配实例/达内教育
  • 普通网站和营销型网站的区别是什么/邀请注册推广赚钱
  • app导航网站源码/求几个微信推广平台
  • 电脑iis做网站/新闻平台发布
  • 9元建站节/成都网络推广哪家好
  • 专业集团门户网站建设公司/促销活动推广语言
  • 网站建设经典语录/百度开车关键词
  • 如何确定网站被k/上海seo关键词优化
  • 灯饰模板网站/东莞网站制作公司