欢迎您访问 最编程 本站为您分享编程语言代码,编程技术文章!
您现在的位置是: 首页

用 c 语言编写一个 Linux 伪终端。

最编程 2024-03-07 14:22:46
...
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<unistd.h>
#include<sys/stat.h>
#include<sys/types.h>
#include<fcntl.h>
#include<pthread.h>
#include<sys/wait.h>
#include<signal.h>
#include<sys/socket.h>
#include<arpa/inet.h>
#include<netinet/in.h>
void fgetstr(char *cmd,int len){
	fgets(cmd,len,stdin);
	if(cmd[strlen(cmd)-1]=='\n')cmd[strlen(cmd)-1]=0;
}
int main(int argc, const char *argv[])
{
	while(1){
		
		pid_t pid=fork();
		if(pid>0){
			char *usrname=getlogin();
			char hostname[128];
			char path[128];
			gethostname(hostname,128);
			getcwd(path,128);
			fprintf(stderr,"\033[1;32;10m%s@%s\033[0m:\033[1;34;10m%s\033[0m$ ",usrname,hostname,path);
			waitpid(-1,NULL,0);	
		}else if(pid==0){
			char cmd[128]={0};
			fgetstr(cmd,sizeof(cmd));
			int i=0;
			char* arg[32]={0};
			char *res=NULL;
			do{

				if(NULL==res)res=strtok(cmd," ");
				else res=strtok(NULL," ");
				if(res==NULL)break;
				arg[i++]=res;
			}while(1);
			if(strcmp(arg[0],"cd")==0){
				if(arg[1][0]=='~'||strcmp(arg[1],"")){
					chdir("/home/ubuntu");
				}
				else{
				chdir(arg[1]);
				}
			}
			else{
				execvp(arg[0],arg);
				exit(0);
			}
		}
		else{
			perror("fork");
			return -1;
		}
	}
	return 0;
}

成果展示:

ubuntu@ubuntu:io$ ./a.out
ubuntu@ubuntu:/home/ubuntu/cwork/io$ ls -l//已经进入伪终端
总用量 592
drwxrwxr-x 2 ubuntu ubuntu   4096 二月 21 09:47 20240220
-rwxrwxr-x 1 ubuntu ubuntu  13144 三月  6 18:56 a.out
-rw------- 1 ubuntu ubuntu 430080 三月  6 18:52 core
-rw-rw-r-- 1 ubuntu ubuntu    562 三月  4 14:24 fcntl.c
drwxrwxr-x 4 ubuntu ubuntu   4096 三月  5 19:18 fileio
drwxrwxr-x 3 ubuntu ubuntu   4096 二月 29 13:35 ipc
drwxrwxr-x 2 ubuntu ubuntu   4096 三月  5 19:26 progress
-rwxrwxr-x 1 ubuntu ubuntu 120606 三月  1 14:41 QQ图片20240301143925.jpg
drwxrwxr-x 2 ubuntu ubuntu   4096 三月  1 19:30 standard_io
drwxrwxr-x 2 ubuntu ubuntu   4096 二月 29 18:33 stdio_link
-rw-rw-r-- 1 ubuntu ubuntu   1223 三月  6 18:56 terminal.c
drwxrwxr-x 2 ubuntu ubuntu   4096 三月  1 14:44 thread
ubuntu@ubuntu:/home/ubuntu/cwork/io$ ps -ajx
  PPID    PID   PGID    SID TTY       TPGID STAT   UID   TIME COMMAND
     0      1      1      1 ?            -1 Ss       0   0:02 /sbin/init splash
     0      2      0      0 ?            -1 S        0   0:00 [kthreadd]
     2      3      0      0 ?            -1 I<       0   0:00 [rcu_gp]
     2      4      0      0 ?            -1 I<       0   0:00 [rcu_par_gp]
     2      6      0      0 ?            -1 I<       0   0:00 [kworker/0:0H-kb]
     2      7      0      0 ?            -1 I        0   0:00 [kworker/0:1-eve]
     2      9      0      0 ?            -1 I<       0   0:00 [mm_percpu_wq]
     2     10      0      0 ?            -1 S        0   0:00 [ksoftirqd/0]
     2     11      0      0 ?            -1 I        0   0:01 [rcu_sched]
     2     12      0      0 ?            -1 S        0   0:00 [migration/0]
     2     13      0      0 ?            -1 S        0   0:00 [idle_inject/0]
     2     14      0      0 ?            -1 S        0   0:00 [cpuhp/0]
     2     15      0      0 ?            -1 S        0   0:00 [kdevtmpfs]
     2     16      0      0 ?            -1 I<       0   0:00 [netns]
     2     17      0      0 ?            -1 S        0   0:00 [rcu_tasks_kthre]
     2     18      0      0 ?            -1 S        0   0:00 [kauditd]
     2     19      0      0 ?            -1 S        0   0:00 [khungtaskd]
     2     20      0      0 ?            -1 S        0   0:00 [oom_reaper]
     2     21      0      0 ?            -1 I<       0   0:00 [writeback]
     2     22      0      0 ?            -1 S        0   0:00 [kcompactd0]
     2     23      0      0 ?            -1 SN       0   0:00 [ksmd]
     2     24      0      0 ?            -1 SN       0   0:00 [khugepaged]
     2    116      0      0 ?            -1 I<       0   0:00 [kintegrityd]
     2    117      0      0 ?            -1 I<       0   0:00 [kblockd]
     2    118      0      0 ?            -1 I<       0   0:00 [blkcg_punt_bio]
     2    119      0      0 ?            -1 I<       0   0:00 [tpm_dev_wq]
     2    120      0      0 ?            -1 I<       0   0:00 [ata_sff]
     2    121      0      0 ?            -1 I<       0   0:00 [md]
     2    122      0      0 ?            -1 I<       0   0:00 [edac-poller]
     2    123      0      0 ?            -1 I<       0   0:00 [devfreq_wq]
     2    124      0      0 ?            -1 S        0   0:00 [watchdogd]
     2    127      0      0 ?            -1 S        0   0:02 [kswapd0]
     2    128      0      0 ?            -1 I<       0   0:00 [kworker/u257:0-]
     2    129      0      0 ?            -1 S        0   0:00 [ecryptfs-kthrea]
     2    132      0      0 ?            -1 I<       0   0:00 [kthrotld]
     2    133      0      0 ?            -1 S        0   0:00 [irq/24-pciehp]
     2    134      0      0 ?            -1 S        0   0:00 [irq/25-pciehp]
     2    135      0      0 ?            -1 S        0   0:00 [irq/26-pciehp]
     2    136      0      0 ?            -1 S        0   0:00 [irq/27-pciehp]
     2    137      0      0 ?            -1 S        0   0:00 [irq/28-pciehp]
     2    138      0      0 ?            -1 S        0   0:00 [irq/29-pciehp]
     2    139      0      0 ?            -1 S        0   0:00 [irq/30-pciehp]
     2    140      0      0 ?            -1 S        0   0:00 [irq/31-pciehp]
     2    141      0      0 ?            -1 S        0   0:00 [irq/32-pciehp]
     2    142      0      0 ?            -1 S        0   0:00 [irq/33-pciehp]
     2    143      0      0 ?            -1 S        0   0:00 [irq/34-pciehp]
     2    144      0      0 ?            -1 S        0   0:00 [irq/35-pciehp]
     2    145      0      0 ?            -1 S        0   0:00 [irq/36-pciehp]
     2    146      0      0 ?            -1 S        0   0:00 [irq/37-pciehp]
     2    147      0      0 ?            -1 S        0   0:00 [irq/38-pciehp]
     2    148      0      0 ?            -1 S        0   0:00 [irq/39-pciehp]
     2    149      0      0 ?            -1 S        0   0:00 [irq/40-pciehp]
     2    150      0      0 ?            -1 S        0   0:00 [irq/41-pciehp]
     2    151      0      0 ?            -1 S        0   0:00 [irq/42-pciehp]
     2    152      0      0 ?            -1 S        0   0:00 [irq/43-pciehp]
     2    153      0      0 ?            -1 S        0   0:00 [irq/44-pciehp]
     2    154      0      0 ?            -1 S        0   0:00 [irq/45-pciehp]
     2    155      0      0 ?            -1 S        0   0:00 [irq/46-pciehp]
     2    156      0      0 ?            -1 S        0   0:00 [irq/47-pciehp]
     2    157      0      0 ?            -1 S        0   0:00 [irq/48-pciehp]
     2    158      0      0 ?            -1 S        0   0:00 [irq/49-pciehp]
     2    159      0      0 ?            -1 S        0   0:00 [irq/50-pciehp]
     2    160      0      0 ?            -1 S        0   0:00 [irq/51-pciehp]
     2    161      0      0 ?            -1 S        0   0:00 [irq/52-pciehp]
     2    162      0      0 ?            -1 S        0   0:00 [irq/53-pciehp]
     2    163      0      0 ?            -1 S        0   0:00 [irq/54-pciehp]
     2    164      0      0 ?            -1 S        0   0:00 [irq/55-pciehp]
     2    165      0      0 ?            -1 I<       0   0:00 [acpi_thermal_pm]
     2    166      0      0 ?            -1 S        0   0:00 [scsi_eh_0]
     2    167      0      0 ?            -1 I<       0   0:00 [scsi_tmf_0]
     2    168      0      0 ?            -1 S        0   0:00 [scsi_eh_1]
     2    169      0      0 ?            -1 I<       0   0:00 [scsi_tmf_1]
     2    172      0      0 ?            -1 I<       0   0:00 [ipv6_addrconf]
     2    184      0      0 ?            -1 I<       0   0:00 [kstrp]
     2    203      0      0 ?            -1 I<       0   0:00 [charger_manager]
     2    262      0      0 ?            -1 I<       0   0:00 [mpt_poll_0]
     2    263      0      0 ?            -1 I<       0   0:00 [mpt/0]
     2    264      0      0 ?            -1 S        0   0:00 [scsi_eh_2]
     2    265      0      0 ?            -1 I<       0   0:00 [scsi_tmf_2]
     2    266      0      0 ?            -1 S        0   0:00 [scsi_eh_3]
     2    267      0      0 ?            -1 I<       0   0:00 [scsi_tmf_3]
     2    268      0      0 ?            -1 S        0   0:00 [scsi_eh_4]
     2    269      0      0 ?            -1 I<       0   0:00 [scsi_tmf_4]
     2    270      0      0 ?            -1 S        0   0:00 [scsi_eh_5]
     2    271      0      0 ?            -1 I<       0   0:00 [scsi_tmf_5]
     2    272      0      0 ?            -1 S        0   0:00 [scsi_eh_6]
     2    273      0      0 ?            -1 I<       0   0:00 [scsi_tmf_6]
     2    274      0      0 ?            -1 S        0   0:00 [scsi_eh_7]
     2    275      0      0 ?            -1 I<       0   0:00 [scsi_tmf_7]
     2    276      0      0 ?            -1 S        0   0:00 [scsi_eh_8]
     2    277      0      0 ?            -1 I<       0   0:00 [scsi_tmf_8]
     2    278      0      0 ?            -1 S        0   0:00 [scsi_eh_9]
     2    279      0      0 ?            -1 I<       0   0:00 [scsi_tmf_9]
     2    280      0      0 ?            -1 S        0   0:00 [scsi_eh_10]
     2    281      0      0 ?            -1 I<       0   0:00 [scsi_tmf_10]
     2    282      0      0 ?            -1 S        0   0:00 [scsi_eh_11]
     2    283      0      0 ?            -1 I<       0   0:00 [scsi_tmf_11]
     2    284      0      0 ?            -1 S        0   0:00 [scsi_eh_12]
     2    285      0      0 ?            -1 I<       0   0:00 [scsi_tmf_12]
     2    286      0      0 ?            -1 S        0   0:00 [scsi_eh_13]
     2    287      0      0 ?            -1 I<       0   0:00 [scsi_tmf_13]
     2    288      0      0 ?            -1 S        0   0:00 [scsi_eh_14]
     2    289      0      0 ?            -1 I<       0   0:00 [scsi_tmf_14]
     2    290      0      0 ?            -1 S        0   0:00 [scsi_eh_15]
     2    291      0      0 ?            -1 I<       0   0:00 [scsi_tmf_15]
     2    292      0      0 ?            -1 S        0   0:00 [scsi_eh_16]
     2    293      0      0 ?            -1 I<       0   0:00 [scsi_tmf_16]
     2    294      0      0 ?            -1 S        0   0:00 [scsi_eh_17]
     2    295      0      0 ?            -1 I<       0   0:00 [scsi_tmf_17]
     2    296      0      0 ?            -1 S        0   0:00 [scsi_eh_18]
     2    297      0      0 ?            -1 I<       0   0:00 [scsi_tmf_18]
     2    298      0      0 ?            -1 S        0   0:00 [scsi_eh_19]
     2    299      0      0 ?            -1 I<       0   0:00 [scsi_tmf_19]
     2    300      0      0 ?            -1 S        0   0:00 [scsi_eh_20]
     2    301      0      0 ?            -1 I<       0   0:00 [scsi_tmf_20]
     2    302      0      0 ?            -1 S        0   0:00 [scsi_eh_21]
     2    303      0      0 ?            -1 I<       0   0:00 [scsi_tmf_21]
     2    304      0      0 ?            -1 S        0   0:00 [scsi_eh_22]
     2    305      0      0 ?            -1 I<       0   0:00 [scsi_tmf_22]
     2    306      0      0 ?            -1 S        0   0:00 [scsi_eh_23]
     2    307      0      0 ?            -1 I<       0   0:00 [scsi_tmf_23]
     2    308      0      0 ?            -1 S        0   0:00 [scsi_eh_24]
     2    309      0      0 ?            -1 I<       0   0:00 [scsi_tmf_24]
     2    310      0      0 ?            -1 S        0   0:00 [scsi_eh_25]
     2    311      0      0 ?            -1 I<       0   0:00 [scsi_tmf_25]
     2    312      0      0 ?            -1 S        0   0:00 [scsi_eh_26]
     2    313      0      0 ?            -1 I<       0   0:00 [scsi_tmf_26]
     2    314      0      0 ?            -1 S        0   0:00 [scsi_eh_27]
     2    315      0      0 ?            -1 I<       0   0:00 [scsi_tmf_27]
     2    316      0      0 ?            -1 S        0   0:00 [scsi_eh_28]
     2    317      0      0 ?            -1 I<       0   0:00 [scsi_tmf_28]
     2    318      0      0 ?            -1 S        0   0:00 [scsi_eh_29]
     2    319      0      0 ?            -1 I<       0   0:00 [scsi_tmf_29]
     2    320      0      0 ?            -1 S        0   0:00 [scsi_eh_30]
     2    321      0      0 ?            -1 I<       0   0:00 [scsi_tmf_30]
     2    322      0      0 ?            -1 S        0   0:00 [scsi_eh_31]
     2    323      0      0 ?            -1 I<       0   0:00 [scsi_tmf_31]
     2    350      0      0 ?            -1 S        0   0:00 [scsi_eh_32]
     2    351      0      0 ?            -1 I<       0   0:00 [scsi_tmf_32]
     2    353      0      0 ?            -1 I<       0   0:01 [kworker/0:1H-kb]
     2    374      0      0 ?            -1 S        0   0:00 [jbd2/sda1-8]
     2    375      0      0 ?            -1 I<       0   0:00 [ext4-rsv-conver]
     1    419    419    419 ?            -1 S<s      0   0:00 /lib/systemd/systemd-journald
     2    430      0      0 ?            -1 I        0   0:13 [kworker/0:4-eve]
     1    438    438    438 ?            -1 Ss       0   0:00 /lib/systemd/systemd-udevd
     2    442      0      0 ?            -1 S<       0   0:00 [loop0]
     2    445      0      0 ?            -1 S<       0   0:00 [loop1]
     2    446      0      0 ?            -1 S<       0   0:00 [loop2]
     2    451      0      0 ?            -1 S<       0   0:00 [loop3]
     2    454      0      0 ?            -1 S<       0   0:00 [loop4]
     2    457      0      0 ?            -1 S<       0   0:00 [loop5]
     2    460      0      0 ?            -1 S<       0   0:00 [loop6]
     2    464      0      0 ?            -1 S<       0   0:00 [loop7]
     2    466      0      0 ?            -1 S<       0   0:00 [loop8]
     2    471      0      0 ?            -1 S<       0   0:00 [loop9]
     2    473      0      0 ?            -1 S<       0   0:00 [loop10]
     2    476      0      0 ?            -1 S<       0   0:00 [loop11]
     2    479      0      0 ?            -1 S<       0   0:00 [loop12]
     2    480      0      0 ?            -1 S<       0   0:00 [loop13]
     2    482      0      0 ?            -1 S<       0   0:00 [loop14]
     2    486      0      0 ?            -1 S<       0   0:00 [loop15]
     2    489      0      0 ?            -1 S<       0   0:00 [loop16]
     2    491      0      0 ?            -1 S<       0   0:00 [loop17]
     2    492      0      0 ?            -1 S<       0   0:00 [loop18]
     2    496      0      0 ?            -1 S<       0   0:00 [loop19]
     2    498      0      0 ?            -1 S<       0   0:00 [loop20]
     2    499      0      0 ?            -1 S<       0   0:00 [loop21]
     2    500      0      0 ?            -1 S<       0   0:00 [loop22]
     2    501      0      0 ?            -1 S<       0   0:00 [loop23]
     2    502      0      0 ?            -1 S<       0   0:00 [loop24]
     1    546    546    546 ?            -1 Ss     101   0:00 /lib/systemd/systemd-resolved
     1    547    547    547 ?            -1 Ssl  62583   0:00 /lib/systemd/systemd-timesync
     1    648    648    648 ?            -1 Ss       0   0:00 /usr/sbin/acpid
     1    657    657    657 ?            -1 Ssl      0   0:00 /usr/sbin/ModemManager --filt
     1    662    662    662 ?            -1 Ss       0   0:00 /lib/systemd/systemd-logind
     1    663    663    663 ?            -1 Ssl      0   0:00 /usr/lib/accountsservice/acco
     1    672    672    672 ?            -1 Ssl      0   0:00 /usr/bin/python3 /usr/bin/net
     1    677    677    677 ?            -1 Ss       0   0:00 /usr/sbin/cupsd -l
     1    684    684    684 ?            -1 Ssl    102   0:00 /usr/sbin/rsyslogd -n
     1    687    687    687 ?            -1 Ss       0   0:00 /usr/sbin/cron -f
     1    690    690    690 ?            -1 Ss     116   0:00 avahi-daemon: running [ubuntu
     1    692    692    692 ?            -1 Ss     103   0:00 /usr/bin/dbus-daemon --system
   690    695    690    690 ?            -1 S      116   0:00 avahi-daemon: chroot helper
     1    700    700    700 ?            -1 Ss       0   0:00 /sbin/wpa_supplicant -u -s -O
     1    701    701    701 ?            -1 Ssl      0   0:01 /usr/sbin/NetworkManager --no
     1    702    702    702 ?            -1 Ssl      0   0:00 /usr/lib/udisks2/udisksd
     1    705    705    705 ?            -1 Ssl      0   0:02 /usr/lib/snapd/snapd
   677    717    717    677 ?            -1 S        7   0:00 /usr/lib/cups/notifier/dbus d
     1    724    724    724 ?            -1 Ssl      0   0:00 /usr/lib/policykit-1/polkitd 
     1    732    732    732 ?            -1 Ssl      0   0:00 /usr/sbin/cups-browsed
     1    773    773    773 ?            -1 Ssl      0   0:00 /usr/bin/python3 /usr/share/u
     1    783    783    783 ?            -1 Ssl      0   0:00 /usr/sbin/gdm3
     2    912      0      0 ?            -1 I<       0   0:00 [kworker/u257:2-]
     2    929      0      0 ?            -1 S        0   0:00 [irq/16-vmwgfx]
     2    931      0      0 ?            -1 I<       0   0:00 [ttm_swap]
     1    953    953    953 ?            -1 Ssl      0   0:00 /usr/lib/upower/upowerd
   783    987    783    783 ?            -1 Sl       0   0:00 gdm-session-worker [pam/gdm-l
     2    992      0      0 ?            -1 I<       0   0:00 [cryptd]
     1   1019   1019   1019 ?            -1 Ssl      0   0:00 /usr/bin/vmhgfs-fuse -o subty
     1   1036   1036   1036 ?            -1 Ss     121   0:00 /lib/systemd/systemd --user
  1036   1039   1036   1036 ?            -1 S      121   0:00 (sd-pam)
   987   1072   1072   1072 tty1       1072 Ssl+   121   0:00 /usr/lib/gdm3/gdm-x-session g
  1072   1077   1072   1072 tty1       1072 Sl+    121   0:00 /usr/lib/xorg/Xorg vt1 -displ
     1   1099   1099   1099 ?            -1 Ssl      0   0:00 /usr/sbin/vmware-vmblock-fuse
     1   1159   1158   1158 ?            -1 Sl       0   0:17 /usr/sbin/vmtoolsd
     1   1211   1211   1211 ?            -1 Ss       0   0:00 /usr/lib/bluetooth/bluetoothd
     1   1214   1213   1213 ?            -1 S        0   0:00 /usr/lib/vmware-vgauth/VGAuth
     1   1223   1223   1223 ?            -1 Ssl    112   0:00 /usr/bin/whoopsie -f
     1   1227   1227   1227 ?            -1 Ss     113   0:00 /usr/sbin/kerneloops --test
     1   1229   1229   1229 ?            -1 Ss     113   0:00 /usr/sbin/kerneloops
  1036   1371   1371   1371 ?            -1 Ss     121   0:00 /usr/bin/dbus-daemon --sessio
  1072   1384   1072   1072 tty1       1072 Sl+    121   0:00 /usr/lib/gnome-session/gnome-
  1036   1451   1451   1451 ?            -1 Ssl    121   0:00 /usr/lib/at-spi2-core/at-spi-
  1036   1455   1455   1455 ?            -1 Ssl    121   0:00 /usr/lib/gvfs/gvfsd
  1036   1472   1455   1455 ?            -1 Sl     121   0:00 /usr/lib/gvfs/gvfsd-fuse /run
  1451   1476   1451   1451 ?            -1 S      121   0:00 /usr/bin/dbus-daemon --config
  1036   1490   1451   1451 ?            -1 Sl     121   0:00 /usr/lib/at-spi2-core/at-spi2
  1384   1523   1072   1072 tty1       1072 Sl+    121   0:01 /usr/bin/gnome-shell
  1036   1529   1529   1529 ?            -1 Ssl    121   0:00 /usr/bin/pulseaudio --daemoni
     1   1531   1531   1531 ?            -1 SNsl   109   0:00 /usr/lib/rtkit/rtkit-daemon
  1523   1542   1542   1072 tty1       1072 Sl     121   0:00 ibus-daemon --xim --panel dis
  1542   1545   1542   1072 tty1       1072 Sl     121   0:00 /usr/lib/ibus/ibus-dconf
     1   1548   1542   1072 tty1       1072 Sl     121   0:00 /usr/lib/ibus/ibus-x11 --kill
  1036   1550   1371   1371 ?            -1 Sl     121   0:00 /usr/lib/ibus/ibus-portal
  1036   1561   1561   1561 ?            -1 Ssl    121   0:00 /usr/libexec/xdg-permission-s
     1   1572   1572   1572 ?            -1 Ssl      0   0:00 /usr/lib/x86_64-linux-gnu/bol
     1   1576   1576   1576 ?            -1 Ssl      0   0:08 /usr/lib/packagekit/packageki
  1384   1577   1072   1072 tty1       1072 Sl+    121   0:00 /usr/lib/gnome-settings-daemo
  1384   1583   1072   1072 tty1       1072 Sl+    121   0:00 /usr/lib/gnome-settings-daemo
  1384   1585   1072   1072 tty1       1072 Sl+    121   0:00 /usr/lib/gnome-settings-daemo
  1384   1587   1072   1072 tty1       1072 Sl+    121   0:02 /usr/lib/gnome-settings-daemo
  1384   1588   1072   1072 tty1       1072 Sl+    121   0:00 /usr/lib/gnome-settings-daemo
  1384   1590   1072   1072 tty1       1072 Sl+    121   0:00 /usr/lib/gnome-settings-daemo
  1384   1591   1072   1072 tty1       1072 Sl+    121   0:00 /usr/lib/gnome-settings-daemo
  1384   1594   1072   1072 tty1       1072 Sl+    121   0:00 /usr/lib/gnome-settings-daemo
  1384   1597   1072   1072 tty1       1072 Sl+    121   0:00 /usr/lib/gnome-settings-daemo
  1384   1600   1072   1072 tty1       1072 Sl+    121   0:00 /usr/lib/gnome-settings-daemo
  1384   1603   1072   1072 tty1       1072 Sl+    121   0:00 /usr/lib/gnome-settings-daemo
  1384   1604   1072   1072 tty1       1072 Sl+    121   0:00 /usr/lib/gnome-settings-daemo
  1384   1606   1072   1072 tty1       1072 Sl+    121   0:00 /usr/lib/gnome-settings-daemo
  1384   1608   1072   1072 tty1       1072 Sl+    121   0:00 /usr/lib/gnome-settings-daemo
  1384   1610   1072   1072 tty1       1072 Sl+    121   0:00 /usr/lib/gnome-settings-daemo
  1384   1615   1072   1072 tty1       1072 Sl+    121   0:00 /usr/lib/gnome-settings-daemo
  1384   1621   1072   1072 tty1       1072 Sl+    121   0:00 /usr/lib/gnome-settings-daemo
     1   1638   1638   1638 ?            -1 Ssl    117   0:00 /usr/lib/colord/colord
  1542   1665   1542   1072 tty1       1072 Sl     121   0:00 /usr/lib/ibus/ibus-engine-sim
   783   1670    783    783 ?            -1 Sl       0   0:00 gdm-session-worker [pam/gdm-p
     1   1673   1673   1673 ?            -1 Ss    1000   0:00 /lib/systemd/systemd --user
  1673   1674   1673   1673 ?            -1 S     1000   0:00 (sd-pam)
     1   1687   1686   1686 ?            -1 Sl    1000   0:00 /usr/bin/gnome-keyring-daemon
  1670   1691   1691   1691 tty2       1691 Ssl+  1000   0:00 /usr/lib/gdm3/gdm-x-session -
  1691   1693   1691   1691 tty2       1691 Sl+   1000   0:21 /usr/lib/xorg/Xorg vt2 -displ
  1673   1699   1699   1699 ?            -1 Ss    1000   0:01 /usr/bin/dbus-daemon --sessio
  1691   1703   1691   1691 tty2       1691 Sl+   1000   0:00 /usr/lib/gnome-session/gnome-
     1   1729   1727   1727 ?            -1 Sl    1000   0:01 /usr/bin/fcitx
     1   1745   1745   1745 ?            -1 Ss    1000   0:00 /usr/bin/dbus-daemon --syslog
     1   1752   1751   1751 ?            -1 SN    1000   0:00 /usr/bin/fcitx-dbus-watcher u
  1703   1793   1793   1793 ?            -1 Ss    1000   0:00 /usr/bin/ssh-agent /usr/bin/s
     1   1801   1800   1800 ?            -1 S     1000   0:01 sogou-qimpanel-watchdog
  1673   1807   1807   1807 ?            -1 Ssl   1000   0:00 /usr/lib/gvfs/gvfsd
  1673   1812   1807   1807 ?            -1 Sl    1000   0:00 /usr/lib/gvfs/gvfsd-fuse /run
  1673   1833   1833   1833 ?            -1 Ssl   1000   0:00 /usr/lib/at-spi2-core/at-spi-
  1833   1838   1833   1833 ?            -1 S     1000   0:00 /usr/bin/dbus-daemon --config
  1673   1841   1833   1833 ?            -1 Sl    1000   0:00 /usr/lib/at-spi2-core/at-spi2
  1703   1879   1691   1691 tty2       1691 Sl+   1000   0:50 /usr/bin/gnome-shell
     1   1888   1887   1887 ?            -1 S<l   1000   0:00 /usr/bin/pulseaudio --start -
     2   1898      0      0 ?            -1 S<       0   0:00 [krfcommd]
  1879   1900   1900   1691 tty2       1691 Sl    1000   0:00 ibus-daemon --xim --panel dis
  1900   1904   1900   1691 tty2       1691 Sl    1000   0:00 /usr/lib/ibus/ibus-dconf
     1   1906   1900   1691 tty2       1691 Sl    1000   0:00 /usr/lib/ibus/ibus-x11 --kill
  1673   1908   1699   1699 ?            -1 Sl    1000   0:00 /usr/lib/ibus/ibus-portal
  1673   1916   1916   1916 ?            -1 Ssl   1000   0:00 /usr/libexec/xdg-permission-s
  1673   1923   1699   1699 ?            -1 Sl    1000   0:00 /usr/lib/gnome-shell/gnome-sh
  1673   1927   1927   1927 ?            -1 Ssl   1000   0:00 /usr/lib/evolution/evolution-
  1673   1934   1699   1699 ?            -1 Sl    1000   0:00 /usr/lib/gnome-online-account
  1673   1943   1699   1699 ?            -1 Sl    1000   0:00 /usr/lib/gnome-online-account
  1673   1956   1956   1956 ?            -1 Ssl   1000   0:00 /usr/lib/gvfs/gvfs-udisks2-vo
  1673   1969   1969   1969 ?            -1 Ssl   1000   0:00 /usr/lib/gvfs/gvfs-gphoto2-vo
  1673   1973   1973   1973 ?            -1 Ssl   1000   0:00 /usr/lib/gvfs/gvfs-goa-volume
  1673   1977   1977   1977 ?            -1 Ssl   1000   0:00 /usr/lib/gvfs/gvfs-mtp-volume
  1673   1981   1981   1981 ?            -1 Ssl   1000   0:00 /usr/lib/gvfs/gvfs-afc-volume
  1703   1986   1691   1691 tty2       1691 Sl+   1000   0:00 /usr/lib/gnome-settings-daemo
  1703   1987   1691   1691 tty2       1691 Sl+   1000   0:00 /usr/lib/gnome-settings-daemo
  1703   1989   1691   1691 tty2       1691 Sl+   1000   0:00 /usr/lib/gnome-settings-daemo
  1703   1991   1691   1691 tty2       1691 Sl+   1000   0:00 /usr/lib/gnome-settings-daemo
  1703   1992   1691   1691 tty2       1691 Sl+   1000   0:00 /usr/lib/gnome-settings-daemo
  1703   1994   1691   1691 tty2       1691 Sl+   1000   0:00 /usr/lib/gnome-settings-daemo
  1703   1997   1691   1691 tty2       1691 Sl+   1000   0:00 /usr/lib/gnome-settings-daemo
  1703   2003   1691   1691 tty2       1691 Sl+   1000   0:00 /usr/lib/gnome-settings-daemo
  1703   2006   1691   1691 tty2       1691 Sl+   1000   0:00 /usr/lib/gnome-settings-daemo
  1703   2019   1691   1691 tty2       1691 Sl+   1000   0:00 /usr/lib/gnome-settings-daemo
  1703   2020   1691   1691 tty2       1691 Sl+   1000   0:00 /usr/lib/gnome-settings-daemo
  1703   2023   1691   1691 tty2       1691 Sl+   1000   0:00 /usr/lib/gnome-settings-daemo
  1703   2026   1691   1691 tty2       1691 Sl+   1000   0:02 /usr/lib/gnome-settings-daemo
  1703   2028   1691   1691 tty2       1691 Sl+   1000   0:00 /usr/lib/gnome-settings-daemo
  1703   2031   1691   1691 tty2       1691 Sl+   1000   0:00 /usr/lib/gnome-settings-daemo
  1703   2032   1691   1691 tty2       1691 Sl+   1000   0:00 /usr/lib/gnome-settings-daemo
  1703   2035   1691   1691 tty2       1691 Sl+   1000   0:00 /usr/lib/gnome-settings-daemo
     1   2053   1691   1691 tty2       1691 Sl+   1000   0:00 /usr/lib/gnome-settings-daemo
  1703   2084   1691   1691 tty2       1691 Sl+   1000   0:00 /usr/lib/gnome-disk-utility/g
  1703   2086   1691   1691 tty2       1691 Sl+   1000   0:01 nautilus-desktop
     1   2087   1691   1691 tty2       1691 Sl+   1000   0:18 /usr/lib/vmware-tools/sbin64/
  1807   2107   1807   1807 ?            -1 Sl    1000   0:00 /usr/lib/gvfs/gvfsd-trash --s
  1673   2137   2137   2137 ?            -1 Ssl   1000   0:00 /usr/lib/evolution/evolution-
  1673   2139   1699   1699 ?            -1 Sl    1000   0:00 /usr/lib/dconf/dconf-service
  2137   2156   2137   2137 ?            -1 Sl    1000   0:00 /usr/lib/evolution/evolution-
     1   2159   2158   2158 ?            -1 Sl    1000   0:04 sogou-qimpanel
  1673   2179   2179   2179 ?            -1 Ssl   1000   0:00 /usr/lib/evolution/evolution-
  2179   2186   2179   2179 ?            -1 Sl    1000   0:00 /usr/lib/evolution/evolution-
  1900   2238   1900   1691 tty2       1691 Sl    1000   0:00 /usr/lib/ibus/ibus-engine-sim
  1703   2276   1691   1691 tty2       1691 Sl+   1000   0:00 update-notifier
  1703   2278   1691   1691 tty2       1691 SLl+  1000   0:03 /usr/bin/gnome-software --gap
     1   2296   2296   2296 ?            -1 Ssl      0   0:01 /usr/lib/fwupd/fwupd
  1673   2334   2334   2334 ?            -1 Ssl   1000   0:00 /usr/lib/glib-networking//gli
  1673   2460   2460   2460 ?            -1 Ssl   1000   0:00 /usr/lib/gvfs/gvfsd-metadata
     1   2468   1691   1691 tty2       1691 Sl+   1000   0:22 /usr/bin/python /usr/bin/x-te
  2468   2478   2478   2478 pts/0      3197 Ss    1000   0:00 /bin/bash
  2478   3197   3197   2478 pts/0      3197 S+    1000   0:09 vim terminal.c
  2468   3202   3202   3202 pts/1      4355 Ss    1000   0:00 /bin/bash
     2   3577      0      0 ?            -1 I        0   0:00 [kworker/u256:1-]
     2   4161      0      0 ?            -1 I        0   0:00 [kworker/u256:0-]
   701   4281   4281    701 ?            -1 S        0   0:00 /sbin/dhclient -d -q -sf /usr
  3202   4355   4355   3202 pts/1      4355 S+    1000   0:00 ./a.out
  4355   4357   4355   3202 pts/1      4355 R+    1000   0:00 ps -ajx
ubuntu@ubuntu:/home/ubuntu/cwork/io$ 

推荐阅读