Pytania otagowane jako system-calls

Pytania dotyczące szczegółów, w jaki sposób program używa wywołań systemowych do interakcji z API jądra, jakie wywołania są dostępne, jak działają itp.


2
Jaka jest różnica między fork () a vfork ()?
Chciałbym szczegółowo zrozumieć różnicę między fork () a vfork (). Nie byłem w stanie całkowicie przetrawić strony podręcznika. Chciałbym również wyjaśnić jeden z moich kolegów komentujących: „ W obecnym systemie Linux nie ma vfork (), nawet jeśli go nazwiesz, wywoła wewnętrznie fork () ”.

2
Odpowiednik „truss-T” i „truss -U” w systemie Linux?
Czy istnieje odpowiednik działania -Ti -Uopcji trussnarzędzia Solaris w systemie Linux. Służą one do określenia funkcji systemowej ( -T) lub funkcji bibliotecznej ( -U), która wywołana przez śledzoną aplikację spowoduje jej zatrzymanie. Lub, inaczej mówiąc, chciałbym, aby każdy proces uruchamiany przez śledzoną aplikację został zatrzymany (tak jakby został zabity przez …


2
Dlaczego nie ma wywołań wstawiania plików?
O ile mi wiadomo, do manipulowania plikami istnieje tylko sys_write syscall w Linuksie, który zastępuje zawartość pliku (lub rozszerza go, jeśli na końcu). Dlaczego nie ma wywołań systemowych do wstawiania lub usuwania treści w plikach w systemie Linux? Ponieważ wszystkie obecne systemy plików nie wymagają przechowywania pliku w ciągłym bloku …




1
Jaki jest pożytek z „magicznych argumentów” w wywołaniu systemowym restartu systemu Linux?
Kiedy czytałem kod źródłowy Linuksa, a dokładniej kod wywołań systemowych, natknąłem się na sys_rebootimplementację: http://lxr.free-electrons.com/source/kernel/reboot.c#L199 . 199 SYSCALL_DEFINE4(reboot, int, magic1, int, magic2, unsigned int, cmd, 200 void __user *, arg) 201 { 202 ... ... 286 } Pośrodku znajduje się ten konkretny fragment kodu: 209 210 /* For safety, we …

1
Dlaczego rmdir i rozłącza dwa osobne wywołania systemowe?
Oto coś, przez co zastanawiałem się przez chwilę: [15:40:50][/tmp]$ mkdir a [15:40:52][/tmp]$ strace rmdir a execve("/usr/bin/rmdir", ["rmdir", "a"], [/* 78 vars */]) = 0 brk(0) = 0x11bb000 mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7ff3772c3000 access("/etc/ld.so.preload", R_OK) = -1 ENOENT (No such file or directory) open("/etc/ld.so.cache", O_RDONLY|O_CLOEXEC) = 3 fstat(3, …

4
Kiedy samodzielnie wywoływać fork () i exec ()?
Uczę się o poleceniach fork () i exec (). Wygląda na to, że fork () i exec () są zwykle wywoływane razem. (fork () tworzy nowy proces potomny, a exec () zastępuje bieżący obraz procesu nowym). Jednak w jakich scenariuszach można wywoływać każdą funkcję osobno? Czy są takie scenariusze?


2
Który plik w jądrze określa fork (), vfork ()… do użycia wywołania systemowego sys_clone ()
Gdy ltrace jest używany do śledzenia wywołań systemowych, widziałem, że fork () używa sys_clone () zamiast sys_fork (). Ale nie mogłem znaleźć źródła linuksa, w którym jest zdefiniowane. Mój program to #include<stdio.h> main() { int pid,i=0,j=0; pid=fork(); if(pid==0) printf("\nI am child\n"); else printf("\nI am parent\n"); } I wyjście ltrace jest …


1
Jak znaleźć numery wywołań systemowych?
Czy numery wywołań systemowych dla każdej maszyny są inne? Czy to zależy od procesora, to znaczy, czy będzie różnica dla i586 i i386? Jeśli różnią się one dla każdej maszyny, jak możesz znaleźć numery swojej maszyny? Jednym wspólnym miejscem jest / usr / include / asm *, ale ten folder …
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.