---
name: "slurm_update_job2"
section: "3"
platform: "linux"
package: "libslurm-dev"
version: "20.11.7+really20.11.4-2+deb11u1"
release: "Debian 11 (Bullseye)"
platforms: ["linux"]
url: "https://new.carta.tech/slurm_update_job"
---

# slurm\_update\_job2(3)

Slurm job and step update functions

Part of [slurm\_update\_job(3)](/slurm_update_job/3.md).

## NAME

slurm\_init\_job\_desc\_msg, slurm\_init\_update\_step\_msg,  slurm\_update\_job, slurm\_update\_job2, slurm\_update\_step - Slurm job and step update functions

## SYNTAX

\#include \<slurm/slurm.h\>

void **slurm\_init\_job\_desc\_msg** (\
\
 	job\_desc\_msg\_t \**job\_desc\_msg\_ptr*\
 );

void **slurm\_init\_update\_step\_msg** (\
\
 	step\_update\_request\_msg\_t \* *step\_msg*\
 );

int **slurm\_update\_job** (\
\
 	job\_desc\_msg\_t \* *job\_msg*\
 );

int **slurm\_update\_job2** (\
\
         job\_desc\_msg\_t \* *job\_msg*,\
         job\_array\_resp\_msg\_t \*\*resp\
 );

int **slurm\_update\_step** (\
\
 	step\_update\_request\_msg\_t \* *step\_msg*\
 );

void **slurm\_free\_job\_array\_resp** (\
\
         job\_array\_resp\_msg\_t \*resp\
 );

## ARGUMENTS

- *job\_msg*

  Specifies the pointer to a job descriptor. See slurm.h for full details on the data structure's contents.

- *step\_msg*

  Specifies the pointer to a step descriptor. See slurm.h for full details on the data structure's contents.

- *resp*

  Array of error codes and job IDs. Always use the **slurm\_free\_job\_array\_resp** function to release the memory allocated to hold the error codes.

## DESCRIPTION

- **slurm\_init\_job\_desc\_msg**

  Initialize the contents of a job descriptor with default values. Execute this function before issuing a request to submit or modify a job.

- **slurm\_init\_update\_step\_msg**

  Initialize the contents of a job step update descriptor with default values. Execute this function before issuing a request to modify a job step.

- **slurm\_update\_job**

  Update a job with the changes made to the data structure passed as an argument to the function.

- **slurm\_update\_job2**

  Update a job or job array with the changes made to the data structure passed as an argument to the function. Call the function **slurm\_free\_job\_array\_resp** to release memory allocated for the response array.

- **slurm\_update\_step**

  Update a job step with the changes made to the data structure passed as an argument to the function.

- **slurm\_free\_job\_array\_resp**

  Release memory allocated by the **slurm\_suspend2**, **slurm\_resume2**, **slurm\_requeue2**, and **slurm\_update\_job2** functions.

## RETURN VALUE

On success, zero is returned. On error, -1 is returned, and the Slurm error code is set appropriately. The function **slurm\_update\_job2** returns zero if the *resp* array is filled, in which the that array should be examined to determine the error codes for individual tasks of a job array. Then call the function **slurm\_free\_job\_array\_resp** to release memory allocated for the response array.

## ERRORS

**SLURM\_PROTOCOL\_VERSION\_ERROR** Protocol version has changed, re-link your code.

**ESLURM\_ACCESS\_DENIED** The requesting user lacks authorization for the requested action (e.g. trying to modify another user's job).

**ESLURM\_INVALID\_JOB\_ID**  Invalid job or step ID value.

**ESLURM\_INVALID\_TIME\_VALUE**  Invalid time value.

## EXAMPLE

\#include \<stdio.h\>\
 \#include \<slurm/slurm.h\>\
 \#include \<slurm/slurm\_errno.h\>

int main (int argc, char \*argv\[\])\
 {\
\
 	job\_desc\_msg\_t              update\_job\_msg;\
\
 	step\_update\_request\_msg\_t   update\_step\_msg;

	slurm\_init\_job\_desc\_msg( &update\_job\_msg );\
\
 	update\_job\_msg.job\_id = 1234;\
\
 	update\_job\_msg time\_limit = 200;\
\
 	if (slurm\_update\_job (&update\_job\_msg)) {\
\
 		slurm\_perror ("slurm\_update\_job error");\
\
 		exit (1);\
\
 	}

	slurm\_init\_update\_step\_msg( &update\_step\_msg );\
\
 	update\_step\_msg.job\_id = 1234;\
\
 	update\_step\_msg.step\_id = 2;\
\
 	update\_step\_msg time\_limit = 30;\
\
 	if (slurm\_update\_step (&update\_step\_msg)) {\
\
 		slurm\_perror ("slurm\_update\_step error");\
\
 		exit (1);\
\
 	}\
\
 	exit (0);\
 }

## NOTE

These functions are included in the libslurm library, which must be linked to your process for use (e.g. "cc -lslurm myprog.c").

## COPYING

Portions copyright (C) 2014 SchedMD LLC. Portions copyright (C) 2009-2010 Lawrence Livermore National Security. Produced at Lawrence Livermore National Laboratory (cf, DISCLAIMER). CODE-OCEC-09-009. All rights reserved.

This file is part of Slurm, a resource management program. For details, see \<https://slurm.schedmd.com/\>.

Slurm is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.

Slurm is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for more details.

## SEE ALSO

[**scontrol**(1)](/scontrol/1.md), [**slurm\_free\_job\_array\_resp**(3)](/slurm_free_job_array_resp/3.md), [**slurm\_get\_errno**(3)](/slurm_get_errno/3.md), [**slurm\_perror**(3)](/slurm_perror/3.md), [**slurm\_strerror**(3)](/slurm_strerror/3.md),
