⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 check-pgrp.c

📁 一个开放源代码的 AT&T 的 Korn Shell 的复制品, 支持大多数 ksh89 的特性。
💻 C
字号:
/* A simple program to print information about process groups */#include "config.h"#include <stdio.h>#include <sys/types.h>#ifdef HAVE_STDLIB_H# include <stdlib.h>#endif /* HAVE_STDLIB_H */#ifdef HAVE_UNISTD_H# include <unistd.h>#endif /* HAVE_UNISTD_H */#ifdef HAVE_FCNTL_H# include <fcntl.h>#else /* HAVE_FCNTL_H */# include <sys/file.h>#endif /* HAVE_FCNTL_H */#ifdef BSD_PGRP# include <sys/ioctl.h>inttcgetpgrp(fd)	int fd;{	int r, grp;	if ((r = ioctl(fd, TIOCGPGRP, &grp)) < 0)		return r;	return grp;}# define getPGRP()	getpgrp(0)#else /* BSD_PGRP */# define getPGRP()	getpgrp()#endif /* BSD_PGRP */int	usage();char	*progname =	"check-pgrp";intmain(argc, argv)    int argc;    char **argv;{    extern int	optind;    extern char	*optarg;    int		opt;    int		ttyfd = 0;    int		my_pgrp, my_pid, my_ppid, tty_pgrp;    char	*tty_name;    char	*e;    if (argc > 0 && argv[0] && *argv[0])	progname = argv[0];    while ((opt = getopt(argc, argv, "u:")) != EOF) {	switch (opt) {	case 'u':	    ttyfd = atoi(optarg);	    break;	default:	    usage(1);	}    }    if (optind != argc) {	    fprintf(stderr, "%s: too many arguments\n", progname);	    usage(0);    }    my_pid = getpid();    my_ppid = getppid();    my_pgrp = getPGRP();    tty_pgrp = tcgetpgrp(ttyfd);    tty_name = ttyname(ttyfd);    printf("in %s pgrp\ntty %s (%s)\npid %d, ppid %d, pgrp %d, tty_pgrp %d\n",	my_pgrp == my_pid ? "my own"	    : (my_pgrp == my_ppid ? "parent's" : "unknown"),	tty_name ? tty_name : "(none)",	tty_pgrp == my_pgrp ? "mine"	    : (tty_pgrp == my_ppid ? "parent's" : "unknown"),	my_pid, my_ppid, my_pgrp, tty_pgrp);    return 0;}intusage(verbose)    int verbose;{    fprintf(stderr, "Usage: %s [-?] [-u fd]\n", progname);    if (verbose)	fprintf(stderr, "\    -u fd	use fd as tty fd (default is 0)\n\");    exit(1);    return 0;}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -