It throws this exception because it can't get the output of the command.
Traceback (most recent call last):
File "socrates/socrates.py", line 302, in <module>
exit(socrates(args.path, args.philo))
File "socrates/socrates.py", line 263, in socrates
test_program(f"{bin_path}/philo_bonus/philo_bonus")
File "socrates/socrates.py", line 177, in test_program
if run_starvation_measures(binary) is False:
File "socrates/socrates.py", line 151, in run_starvation_measures
results.append(measure_starvation_timing(binary))
File "socrates/socrates.py", line 114, in measure_starvation_timing
if data[-1] == "\0":
IndexError: string index out of range
The reason is that the new bonus of the philosophers project says every philosopher has to be a process. So when it tries to get the output of ./philo_bonus, it doesn't capture the output from it's child processes.
So the string data becomes an empty string and throws an exception.
I couldn't really think of a way of capturing output from child processes but I will look into that.
It throws this exception because it can't get the output of the command.
The reason is that the new bonus of the philosophers project says every philosopher has to be a process. So when it tries to get the output of
./philo_bonus, it doesn't capture the output from it's child processes.So the string
databecomes an empty string and throws an exception.I couldn't really think of a way of capturing output from child processes but I will look into that.