// #include "monitor_user.h" #include #include #include #include #include #define DEVICE "/dev/variable_monitor" int file_desc = -1; pid_t pid = 0; /// @brief start watch /// @param w_arg /// @return 0 means success, other means fail int start_watch() { if (file_desc < 0) { file_desc = open(DEVICE, 0); } if (file_desc < 0) { printf("Can't open device file: %s\n", DEVICE); return -1; } printf("1 \n"); if (ioctl(file_desc, 2, &pid) < 0) { printf("ioctl failed\n"); close(file_desc); return -1; } printf("2 \n"); return 0; } /// @brief cancel watch /// @return 0 means success, other means fail int cancel_watch() { if (file_desc < 0) { file_desc = open(DEVICE, 0); } if (file_desc < 0) { printf("Device not open: %s,%d \n", DEVICE, file_desc); return file_desc; } close(file_desc); file_desc = -1; return 0; } int main(int argc, char **argv){ if (argc != 2) printf("USAGE: unwind-pid \n"); pid = atoi(argv[1]); printf("%d \n", pid); start_watch(); cancel_watch(); }