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

不要钱做网站软件搜索引擎网站推广怎么做

不要钱做网站软件,搜索引擎网站推广怎么做,wordpress 下划线,wordpress 网店 主题目录 1 kill函数 1.1 kill函数介绍 1.2 示例程序 2 raise函数 2.1 raise函数介绍 2.2 示例程序 3 alarm函数 3.1 alarm函数介绍 3.2 示例程序 4 pause函数 4.1 pause函数介绍 4.2 示例程序 与 kill 命令相类似#xff0c; Linux 系统提供了 kill()系统调用#…目录 1 kill函数 1.1 kill函数介绍 1.2 示例程序 2  raise函数 2.1 raise函数介绍 2.2 示例程序 3 alarm函数 3.1 alarm函数介绍 3.2 示例程序 4 pause函数 4.1 pause函数介绍 4.2 示例程序 与 kill 命令相类似 Linux 系统提供了 kill()系统调用一个进程可通过 kill()向另一个进程发送信号除了 kill()系统调用之外 Linux 系统还提供了库函数 raise()也可用于实现发送信号的功能。此外系统调用 alarm()和 pause()函数也可进行发送信号的特殊操作。   1 kill函数 1.1 kill函数介绍 kill()系统调用可将信号发送给指定的进程或进程组中的每一个进程 其函数原型如下所示 #include sys/types.h #include signal.hint kill(pid_t pid, int sig); pid 参数 pid 为正数的情况下用于指定接收此信号的进程 pid除此之外参数 pid 也可设置为 0 或-1 以及小于-1 等不同值。 pid取值含义正数则信号 sig 将发送到 pid 指定的进程0则将 sig 发送到当前进程的进程组中的每个进程-1 则将 sig 发送到当前进程有权发送信号的每个进程但进程 1init除外 小于-1 将 sig 发送到 ID 为-pid 的进程组中的每个进程 进程中将信号发送给另一个进程是需要权限的并不是可以随便给任何一个进程发送信号超级用户root 进程可以将信号发送给任何进程但对于非超级用户普通用户进程来说其基本规则是发送者进程的实际用户 ID 或有效用户 ID 必须等于接收者进程的实际用户 ID 或有效用户 ID。 sig 参数 sig 指定需要发送的信号也可设置为 0如果参数 sig 设置为 0 则表示不发送信号但任执行错误检查这通常可用于检查参数 pid 指定的进程是否存在。返回值 成功返回 0失败将返回-1并设置 errno。 1.2 示例程序 示例程序接受一个命令行参数作为要发送信号的进程ID #include stdio.h #include stdlib.h #include signal.h #include unistd.h #include errno.hint main(int argc, char *argv[]) {// 检查参数数量if (argc ! 2) {fprintf(stderr, Usage: %s pid\n, argv[0]);exit(EXIT_FAILURE);}// 第一个参数是程序名第二个参数是我们的进程IDpid_t target_pid (pid_t)strtol(argv[1], NULL, 10);// strtol会设置errno如果转换失败我们需要检查errnoif (errno ERANGE || target_pid (pid_t)-1) {perror(Invalid PID);exit(EXIT_FAILURE);}// 要发送的信号这里我们发送SIGTERM信号int signal_to_send SIGTERM;// 使用kill函数发送信号if (kill(target_pid, signal_to_send) -1) {// 如果kill调用失败打印错误消息并退出perror(Error sending signal);exit(EXIT_FAILURE);}printf(Signal %d sent to process %d\n, signal_to_send, target_pid);return 0; } 程序首先检查了命令行参数的数量输入进程ID参数。使用strtol函数将命令行参数转换为pid_t类型的进程ID。strtol函数尝试将字符串转换为长整数并允许我们指定基数这里使用10进制。检查strtol是否成功转换了字符串。如果转换失败或超出范围errno会被设置为ERANGE。如果strtol返回(pid_t)-1并且errno不是ERANGE这意味着没有发生范围错误但字符串可能不是一个有效的数字。使用kill()函数向转换得到的进程ID发送SIGTERM信号。如果信号发送成功程序将打印一条消息说明信号已经发送到指定的进程。 程序运行结果如下可以看到kill没有权限的pid和不存在的pid会报错 2  raise函数 2.1 raise函数介绍 raise()函数用于发送信号给自己即发送信号给当前进程。raise()函数原型如下所示 #include signal.hint raise(int sig) sig指定要发送给当前进程的信号编号。返回值如果成功raise()返回0如果失败返回-1并设置errno以指示错误。 raise()其实等价于kill(getpid(), sig); 2.2 示例程序 以下是使用raise()函数在当前进程内发送信号的示例程序 #include stdio.h #include stdlib.h #include signal.h #include unistd.h// 信号处理函数 void signal_handler(int sig) {printf(Signal %d caught by process %d\n, sig, getpid()); }int main() {// 设置信号处理函数struct sigaction sa;sa.sa_handler signal_handler; // 指定信号处理器sigemptyset(sa.sa_mask); // 初始化信号集屏蔽信号sa.sa_flags 0; // 无特殊标志// 为SIGUSR1信号设置信号处理函数if (sigaction(SIGUSR1, sa, NULL) 0) {perror(sigaction);exit(EXIT_FAILURE);}printf(Process %d is running, and will raise SIGUSR1 to itself.\n, getpid());// 使用raise发送SIGUSR1信号给自己if (raise(SIGUSR1) ! 0) {perror(raise);exit(EXIT_FAILURE);}return 0; } 程序首先定义了一个signal_handler函数用于处理SIGUSR1信号。在main函数中使用sigaction()函数设置了SIGUSR1信号的处理器为signal_handler。然后我们使用raise(SIGUSR1)向当前进程发送SIGUSR1信号。这将触发signal_handler函数的执行。如果raise()调用成功程序将继续执行。如果失败将打印错误消息并退出。 程序运行结果如下 3 alarm函数 3.1 alarm函数介绍 alarm函数用于设置一个定时器的系统调用当定时器到期时将向进程发送SIGALRM信号。函数原型如下 #include unistd.hunsigned int alarm(unsigned int seconds); seconds指定定时器到期前的时间以秒为单位。返回值alarm()函数返回在调用之前已经设置的任何定时器的剩余时间以秒为单位。如果之前没有设置定时器或者定时器已经到期返回0。 需要注意的是 alarm 闹钟并不能循环触发只能触发一次若想要实现循环触发可以在SIGALRM 信号处理函数中再次调用 alarm()函数设置定时器。 3.2 示例程序 以下是使用alarm()函数发送信号的示例程序 #include stdio.h #include stdlib.h #include signal.h #include unistd.hvoid handle_alarm(int sig) {printf(Timer expired, process %d received SIGALRM\n, getpid());exit(-1); }int main() {struct sigaction sa;// 设置信号处理函数sa.sa_handler handle_alarm;sigemptyset(sa.sa_mask);sa.sa_flags 0;if (sigaction(SIGALRM, sa, NULL) 0) {perror(sigaction);exit(EXIT_FAILURE);}printf(Process %d will raise SIGALRM in 5 seconds\n, getpid());// 设置定时器5秒后触发SIGALRMunsigned int remaining_time alarm(5);if (remaining_time 0) {printf(Previous timer had %u seconds remaining\n, remaining_time);}// 主循环等待SIGALRM信号while(1) {// 这里可以执行其他任务但在这个例子中我们只是等待信号sleep(1); // 避免CPU占用过高}return 0; } 程序定义了一个handle_alarm函数来处理SIGALRM信号。使用sigaction()设置了SIGALRM的信号处理函数。使用alarm(5)设置了一个5秒的定时器。定时器到期后将发送SIGALRM信号给当前进程。如果之前有设置定时器alarm()会返回之前定时器的剩余时间。 程序运行结果如下 4 pause函数 4.1 pause函数介绍 pause()函数一个系统调用可以使得进程暂停运行、进入休眠状态直到进程捕获到一个信号为止。pause()函数的原型如下 #include unistd.hint pause(void); 参数pause()函数不接受任何参数。 返回值pause()函数在正常情况下不会返回因为它会无限期地挂起执行。只有当进程收到一个信号并且该信号不是通过pause()调用捕获时它才会返回。如果被信号中断它返回-1并设置errno为EINTR。 4.2 示例程序 以下是使用pause()函数等待发送信号的示例程序 #include stdio.h #include stdlib.h #include signal.h #include unistd.hvoid handle_signal(int sig) {printf(Received signal %d\n, sig); }int main() {struct sigaction sa;// 设置信号处理函数sa.sa_handler handle_signal;sigemptyset(sa.sa_mask);sa.sa_flags 0;// 为SIGINT设置信号处理函数if (sigaction(SIGINT, sa, NULL) 0) {perror(sigaction);exit(EXIT_FAILURE);}printf(Process %d is pausing. Send SIGINT to continue.\n, getpid());// 挂起进程直到收到信号pause();printf(Process %d has been resumed.\n, getpid());return 0; } 程序定义了一个handle_signal函数来处理SIGINT信号。使用sigaction()设置了SIGINT的信号处理函数。调用pause()使进程挂起等待接收信号。在这个例子中我们等待SIGINT信号这里由通过CtrlC触发。当进程收到SIGINT信号时pause()返回handle_signal函数被调用然后进程继续执行。 程序运行结果如下
http://www.hkea.cn/news/14378611/

相关文章:

  • 怎么创建个人网站珠海企业网站建设价格
  • 网站收缩栏商丘做网站一般多少钱
  • 临邑网站开发网站动画特效
  • 重庆市建设工程信息网怎么查昆明百度seo
  • 公司网站建设哪家比较好室内装修设计在哪里学
  • 包头网站作风建设年自评材料重庆森林影评
  • 什么网站可以做项目贵州国高建设工程有限公司 网站
  • 苏州网站开发费用详情烟台专业网站建设公司
  • 网站建设与管理asp灰产项目网
  • 免费英文网站模板电影网站建设内容
  • 网页与网站设计 什么是属性建设企业网站官网u盾登录
  • php做的网站模板下载自己做网站导航页
  • 南充网站建设价格网站开发全科班
  • 绑定网站网站建设经验典型
  • 北京公司建设网站专业网站建设公司兴田德润在哪里
  • 个人备案网站 论坛电子商务网站建设实践报告
  • 做网站做好用的软件做美工用的网站
  • 做网站诈钱网站建设问题整改报告
  • 东莞网站网络推广公司网站开发公司php工资
  • 厦门做网站seo的中企动力是做什么的?
  • 抚顺 网站建设励志故事网站源码
  • 外贸建站应该怎么做十大永久免费网络游戏
  • 海淀做网站设计的公司wordpress访问密码
  • 平面设计接单网站有哪些网站建设外包平台
  • 顺的网站建设策划微软制作网页软件
  • 南阳网站建设推广佛山建设局官方网站
  • 网站设计培训机构用c 来建设网站
  • 比较实用的h5网页建设网站wordpress ping大全
  • 网站开发公司怎么做账吉安网页制作公司
  • 做网站一班需要多少钱宁波电商平台网站建设