代码拉取完成,页面将自动刷新
同步操作将从 src-openEuler/dhcp 强制同步,此操作会覆盖自 Fork 仓库以来所做的任何修改,且无法恢复!!!
确定后同步将在后台操作,完成时将刷新页面,请耐心等待。
--- a/client/dhclient.c 2019-01-25 14:34:46.996000000 +0800
+++ b/client/dhclient.c 2019-01-25 14:34:16.382000000 +0800
@@ -114,6 +114,8 @@
int bootp_broadcast_always = 0;
+int buf_size = 128;
+
extern struct option *default_requested_options[];
void run_stateless(int exit_mode, u_int16_t port);
@@ -143,6 +143,7 @@ static void dhclient_ddns_cb_free(dhcp_ddns_cb_t *ddns_cb,
char* file, int line);
#endif /* defined NSUPDATE */
+static int check_dhclient_pid(pid_t pid);
/*!
*
@@ -682,7 +686,8 @@
e = fscanf(pidfd, "%ld\n", &temp);
oldpid = (pid_t)temp;
- if (e != 0 && e != EOF && oldpid) {
+ if (e != 0 && e != EOF) {
+ if (oldpid && check_dhclient_pid(oldpid)) {
if (kill(oldpid, SIGTERM) == 0) {
log_info("Killed old client process");
(void) unlink(path_dhclient_pid);
@@ -698,6 +703,7 @@
log_info("Removed stale PID file");
(void) unlink(path_dhclient_pid);
}
+ }
}
fclose(pidfd);
} else {
@@ -738,7 +744,7 @@
oldpid = (pid_t)temp;
if (e != 0 && e != EOF) {
- if (oldpid) {
+ if (oldpid && check_dhclient_pid(oldpid)) {
if (kill(oldpid, SIGTERM) == 0)
unlink(path_dhclient_pid);
}
@@ -6045,3 +6051,27 @@
log_error("dhcp4o6_stop: send(): %m");
}
#endif /* DHCPv6 && DHCP4o6 */
+
+static int check_dhclient_pid(pid_t pid) {
+ char proc_pid_path[buf_size];
+ char task_name[buf_size];
+
+ memset(proc_pid_path, 0, buf_size);
+ memset(task_name, 0, buf_size);
+
+ snprintf(proc_pid_path, buf_size - 1, "/proc/%d/comm", pid);
+
+ FILE* fp = fopen(proc_pid_path, "r");
+ if(fp != NULL) {
+ if( fgets(task_name, buf_size, fp) == NULL ) {
+ fclose(fp);
+ return 0;
+ }
+ fclose(fp);
+ if(strncmp(task_name, "dhclient", 8) == 0) {
+ return 1;
+ }
+ }
+
+ return 0;
+}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。