pidof: support for omitted %PPID and additional separators
This commit introduces support for special %PPID value that can be passed to the -o option as a substitution for parent PID. It also allows users to use two additional separators for omitted PIDs - colon and semicolon.
This commit is contained in:
		
							
								
								
									
										4
									
								
								pidof.1
									
									
									
									
									
								
							
							
						
						
									
										4
									
								
								pidof.1
									
									
									
									
									
								
							| @@ -44,7 +44,9 @@ the current root directory of processes they do not own. | |||||||
| Scripts too - this causes the program to also return process id's of | Scripts too - this causes the program to also return process id's of | ||||||
| shells running the named scripts. | shells running the named scripts. | ||||||
| .IP "-o \fIomitpid\fP" | .IP "-o \fIomitpid\fP" | ||||||
| Tells \fIpidof\fP to omit processes with that process id. | Tells \fIpidof\fP to omit processes with that process id. The special | ||||||
|  | pid \fB%PPID\fP can be used to name the parent process of the \fIpidof\fP | ||||||
|  | program, in other words the calling shell or shell script. | ||||||
| .SH "EXIT STATUS" | .SH "EXIT STATUS" | ||||||
| .TP | .TP | ||||||
| .B 0 | .B 0 | ||||||
|   | |||||||
							
								
								
									
										11
									
								
								pidof.c
									
									
									
									
									
								
							
							
						
						
									
										11
									
								
								pidof.c
									
									
									
									
									
								
							| @@ -246,10 +246,15 @@ static void add_to_omit_list (char *input_arg) | |||||||
| 	pid_t omit_pid; | 	pid_t omit_pid; | ||||||
|  |  | ||||||
| 	omit_str = NULL; | 	omit_str = NULL; | ||||||
| 	omit_str = strtok(input_arg, ","); | 	omit_str = strtok(input_arg, ",;:"); | ||||||
| 	while (omit_str) { | 	while (omit_str) { | ||||||
|  |  | ||||||
| 		omit_pid = strtoul(omit_str, &endptr, 10); | 		if (!strcmp(omit_str,"%PPID")) {  /* keeping this %PPID garbage for backward compatibility only */ | ||||||
|  | 			omit_pid = getppid();     /* ... as it can be replaced with $$ in common shells */ | ||||||
|  | 			endptr = omit_str + sizeof("%PPID") - 1; | ||||||
|  | 		} else { | ||||||
|  | 			omit_pid = strtoul(omit_str, &endptr, 10); | ||||||
|  | 		} | ||||||
|  |  | ||||||
| 		if (*endptr == '\0') { | 		if (*endptr == '\0') { | ||||||
| 			if (omit_count == omit_size) { | 			if (omit_count == omit_size) { | ||||||
| @@ -265,7 +270,7 @@ static void add_to_omit_list (char *input_arg) | |||||||
| 			xwarnx(_("illegal omit pid value (%s)!\n"), omit_str); | 			xwarnx(_("illegal omit pid value (%s)!\n"), omit_str); | ||||||
| 		} | 		} | ||||||
|  |  | ||||||
| 		omit_str = strtok(NULL, ","); | 		omit_str = strtok(NULL, ",;:"); | ||||||
| 	} | 	} | ||||||
| } | } | ||||||
|  |  | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user