bloc_note
Ceci est une ancienne révision du document !
Bloc Note rapide
#include <stdio.h> #include <stdlib.h> #include <string.h> #include <unistd.h> #include <sys/types.h> void check_if_launched_by_script() { pid_t ppid = getppid(); // Obtenir le Parent Process ID char path[256]; char cmdline[1024] = {0}; FILE *file; // Construire le chemin vers /proc/[PPID]/cmdline snprintf(path, sizeof(path), "/proc/%d/cmdline", ppid); // Ouvrir le fichier cmdline pour lire la commande du parent file = fopen(path, "r"); if (!file) { perror("Error: Unable to open parent process info."); exit(1); } // Lire le contenu de cmdline if (fgets(cmdline, sizeof(cmdline), file) != NULL) { // Vérifier si cmdline contient uniquement "bash" ou "sh" (shell interactif) if (strstr(cmdline, "bash") && !strchr(cmdline, '/')) { fprintf(stderr, "Error: This program cannot be run directly from an interactive shell.\n"); fclose(file); exit(1); } } fclose(file); } int main(int argc, char *argv[]) { // Vérifier si le programme a été lancé via un script check_if_launched_by_script(); printf("Program successfully launched by a shell script.\n"); // Logique principale du programme ici return 0; }
bloc_note.1734426723.txt.gz · Dernière modification : 2024/12/17 10:12 de admin