Outils pour utilisateurs

Outils du site


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