请教以下几个操作如何实现? 谢谢!

发布于 2022-07-24 11:23:43 字数 490 浏览 13 评论 8

操作1:重启程序
main() {
    main_program(); // 主程序
    check_restart_condition(); //检测重启条件是否满足
    restart(); // 重启main()
}
要重启main()程序,这个restart()应该怎么写?

操作2:设置计算机的ip,mask,gateway
main() {
    read_from_file(); //从文件中读取ip,mask,gateway配置参数值
    set_computer_netparam(ip,mask,gateway); //设置计算机的ip,mask,gateway
}
请问set_computer_netparam()应该怎么写?linux有没有提供可配置网络参数的API调用命令?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(8

甜味超标? 2022-07-24 18:20:19

原帖由 tanq 于 2006-6-25 12:22 发表
在/etc/sysconfig/目录下有个文件 network-scripts的文件,具体的我也记的不是很清楚了,在每个文件后面会带网络设备的后缀,比如-eth0(以太网接口0)...可以直接编写程序直接修改那个文件,再重新启动网络服务就 ...

我用了如下命令
int main(void) {
     system("ifconfig eth0 192.168.0.154 netmask 255.255.255.0");
     return 0;
}
这个ip地址和隐码是否已经写入配置文件?难道每次启动都要调用这个命令?

梦与时光遇 2022-07-24 18:20:19

int main(int argc, char **argv) {
  printf( "Argv[1]: %sn", argv[1] );
  if ( 0 == strcmp(argv[1], "restart") ) {
    argv[1] = "quit";
    execvp(argv[0], argv);
  }
  return 0;
}

execvp()命令类似于开启一个新的进程。而execvp()执行时,main()函数的return 0不知道是否已经执行?我的意思是:调用execvp()后,main()是否退出运行了,还是需要一直等到execvp执行完返回后才退出?

二智少女猫性小仙女 2022-07-24 18:20:19

原帖由 wanghun 于 2006-6-26 09:08 发表

我用了如下命令
int main(void) {
     system("ifconfig eth0 192.168.0.154 netmask 255.255.255.0");
     return 0;
}
这个ip地址和隐码是否已经写入配置文件?难道每次启动都要调用这个命 ...

这个问题已经解决,只要写入到网络配置文件就行了。

蓝咒 2022-07-24 18:20:19

原帖由 wanghun 于 2006-6-26 09:12 发表
int main(int argc, char **argv) {
  printf( "Argv[1]: %sn", argv[1] );
  if ( 0 == strcmp(argv[1], "restart") ) {
    argv[1] = "quit";
    execvp(argv[0], argv); ...

请问, execvp执行后 , 本程序并不退出阿?

ゞ记忆︶ㄣ 2022-07-24 18:19:46

谢谢楼上两位的回复。

自此以后,行同陌路 2022-07-24 18:09:01
  1. #include <unistd.h>
  2. #include <string.h>
  3. #include <stdlib.h>
  4. #include <stdio.h>
  5. int main(int argc, char **argv) {
  6.   printf( "Argv[1]: %sn", argv[1] );
  7.   if ( 0 == strcmp(argv[1], "restart") ) {
  8.     argv[1] = "quit";
  9.     execvp(argv[0], argv);
  10.   }
  11.   return 0;
  12. }

复制代码

  1. $ gcc exec.c -o a.out
  2. $ ./a.out restart
  3. Argv[1]: restart
  4. Argv[1]: quit
  5. $

复制代码

空城缀染半城烟沙 2022-07-24 17:39:02

在/etc/sysconfig/目录下有个文件 network-scripts的文件,具体的我也记的不是很清楚了,在每个文件后面会带网络设备的后缀,比如-eth0(以太网接口0)...可以直接编写程序直接修改那个文件,再重新启动网络服务就可以了。
或者使用system 调用 ifconfig 命令也可以实现。自己试试看吧!

苏璃陌 2022-07-24 17:22:30

没有人知道吗? 给个能实现这些功能的方法也行,谢谢

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文